以下代码是存储过程中的一段。表名是通过变量tblname获取的。 jydate是该存储过程输入参数。
v_sqlstr1:='insert into info_error
select b.id,a.no,
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=jydate';
execute immediate v_sqlstr1; --第6行
存储过程编译通过,但在执行的时候报错:“无效列名”,报错位置在最后一行,也就是第6行。
但是所有的表和列都是存在且正确的,我估计还是自己的动态sql写的有问题,尤其是在insert中
嵌套一个select,而动态表名tblname又是在select语句中的。
请教正确的实现方法,谢谢!
v_sqlstr1:='insert into info_error
select b.id,a.no,
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=jydate';
execute immediate v_sqlstr1; --第6行
存储过程编译通过,但在执行的时候报错:“无效列名”,报错位置在最后一行,也就是第6行。
但是所有的表和列都是存在且正确的,我估计还是自己的动态sql写的有问题,尤其是在insert中
嵌套一个select,而动态表名tblname又是在select语句中的。
请教正确的实现方法,谢谢!
解决方案 »
- 小弟来问个问题,关于连接查询,存在重复记录时,只连接显示唯一一条。。
- 求个oracle的sql语句
- TNSPING不通,但LISTENER配置是对的,请进
- 诸如select xx from tablename where cor in (;something) 中的something怎么变量绑定
- imp导入成功,但数据库中找不到导入的数据表及视图
- 动态建立表,说有错误,知道帮帮忙
- 通过培训学unix oracle好吗?请教!在北京,哪的培训机构比较好!
- 导数据问题.(ORACLE8.17中文版--->ORACLE9I英文版)
- 急!!!oracle8.05連接问题
- 需要oracle帮助文档
- Oracle行列转换问题2~
- 综合查询的设计
select b.id,a.no,
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=jydate';
execute immediate v_sqlstr1;可能是多了一个逗号
十之八九是列名写错了。
select b.id,a.no,
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=jydate';
execute immediate v_sqlstr1;
v_sqlstr1:='insert into info_error
select b.id,a.no,
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=jydate'; --- debug the sql dbms_output.put_line('[debug sql]||'v_sqlstr1||'[debug end]');
---execute immediate v_sqlstr1; --第6行
SQL>set serveroutput on;
SQL>exec procedurename;先把sql打出来看看就知道了==================================================================
Inthirties关注Oracle数据库 维护 优化,安全,备份,恢复,迁移,故障处理如果你需要帮助或想和我一起学习的请联系
联系方式QQ:370140387
电子邮件:[email protected]
网站: http://www.inthirties.com
select b.id,a.no
from '||tblname||' a,custinfo b
where a.bank_no=b.bank_no
and a.tdate=to_date('''||jydate||''',''yyyymmdd'')';
dbms_output.put_line(v_sqlstr1);
execute immediate v_sqlstr1;