存储过程,插入语句问题

vinceyu 2010-05-24 11:41:49
create or replace procedure mytest
is
sql_a varchar(250);
sql_str varchar(250);
sql_NO integer;

begin
sql_NO:=0;
sql_str:='bb';
sql_a:='insert into TestTable'||sql_NO||'(DATA,ID) values(to_char('||sql_str||sql_NO||'),1)';
EXECUTE immediate sql_a;
end mytest;


表TestTable 有两个字段
DATA为VARCHAR2(50),ID为NUMBER


执行存储过程出现如下错误提示:


ORA-00984: 列在此处不允许
ORA-06512: "TEST.MYTEST",line 10
ORA-06512: 在 line7


为什么不让插入呢?

单独执行
insert into TestTable0(DATA,ID) values(to_char('bb'||0),1);
是没有问题的

希望指点!!!
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
氧气网航 2010-05-24
  • 打赏
  • 举报
回复
你下次可以把SQL输出线看看是怎么样的
shmily_zjl 2010-05-24
  • 打赏
  • 举报
回复
楼主不需要用to_char来转换,字符和number拼接会自动转为字符的。我给你稍微修改了下过程,可以正确执行的。
create or replace procedure mytest
is
sql_a varchar(250);
sql_str varchar(250);
sql_NO integer;

begin
sql_NO:=0;
sql_str:='bb';
sql_a:='insert into TestTable'||sql_NO||'(DATA,ID) values('''||sql_str||sql_NO||''',1)';
EXECUTE immediate sql_a;
commit;
end mytest;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧