My FAQ,最新最全的IT技术FAQ
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论
  当前位置: > 程序开发 > 数据库开发 > Oracle
怎样才算使用了联编变量,在pl/sql中又如何使用?
作者:未知 时间:2005-09-13 19:01 出处:ChinaUnix.net 责编:My FAQ
              摘要:怎样才算使用了联编变量,在pl/sql中又如何使用?

曾有人说如果想使自己写的pl/sql粗造的话,在pl/sql中就不要使用联编变量!

1:可是我想请教诸位,如何就算使用了联编变量!
使用dbms_sql包动态执行sql语句(在语句中含有变量),就算使用了吗?
我又如何判断是否使用了联编变量?

2:我在pl/sql块中执行动态sql语句可以这样写吗?
  declare  v_Cursor  integer ;
                v_CurRet  integer ;
                 v_SqlStr  Varchar(1024);
  begin
     open 一游标
    [color=blue:95a6c11e7d]v_Cursor  := dbms_sql.open ;[/color:95a6c11e7d]
     loop
        fetch  一游标  into 变量 ;
        Exit when .........
        V_sqlStr := '...........'||变量;
        dbms_sql.parse(v_Cursor,v_sqlStr,dbms_sql.native ) ;
       v_CurRet :=  dbms_sql.execute(v_cursor) ;
        ...........
     end loop ;
     dbms_sql.close(v_Cursor) ;
  end ;
我可以在一次open一个游标后,在循环中使用parse解析执行变化的sql语句吗!
还是应该把open,close语句放入循环之内,打开--解析--执行--关闭。

反正上述代码可以编译通过,也可以执行,就是我不知是否就算使用了联编变量?

【发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭
 zhouok 回复于:2004-01-15 13:09:15
你这样用当然没有用到联编变量,要用dbms_sql.bind_variable 来处理.
方法如下:
--------------------------------------------------------------
declare
  c number;
   n number;
  amount number:= 100;
BEGIN
   c:= dbms_sql.open_cursor;
   dbms_sql.parse(c, 'insert into accts values(''income'', :1)', dbms_sql.native);
   dbms_sql.bind_variable(c, '1', amount);
   n := dbms_sql.execute(c);
   dbms_sql.close_cursor(c);
END;

 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有