【原创】存储过程中执行动态SQL错…

来源:互联网 发布:彩虹六号低配优化补丁 编辑:程序博客网 时间:2024/04/27 10:11

利用存储过程解决流复制的产生的错误时,有如下语句:

   v_select:='SELECT count(*)FROM :1.:2@SCDB.GZDS.GOV.CNWHERE :3 ';
   execute immediatev_select  into v_count usingob_owner,ob_name,SUBSTR(v_sql, 5);

执行时报的错误为:无效的表名

在网上一搜,说是表名不可以用绑定变量的方法,只能用||连接。

修改语句如下:

   v_sql_temp := 'SELECTCOUNT(*)  FROM ' || ob_owner || '.' || ob_name||
                '@SCDB.GZDS.GOV.CN' || 'WHERE ' || SUBSTR(v_sql, 5);

   executeimmediate v_sql_temp  into v_cnt;

然后问题得到解决。

注:关于execute动态SQL的用法详见博文http://blog.sina.com.cn/s/blog_62defbef0101o7vf.html。

0 0
原创粉丝点击