oracle 的存储过程中 动态的创建一张表 然后插入一个变量到这个表中,表能动态的创建但是变量不能插入进去

2024-11-23 00:44:55
推荐回答(2个)
回答(1):

1、execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')'; v_name 既然是变量 怎么可能会核轮用' '括号起来;
就算是 直接执行 的话 也是 execute immediate ' insert into addtopinfo values(sysdate,v_name);
2、如果有v_name的话 ,我建议你一没逗般用拼sql的方式来执行
例如 如下格式(这个是我自己的procedure截取的,可以参考下)
v_CreateSql := ' create table ' ||vv_owner||'.'|| vv_name_temp ||
' as select * from ' || iv_name || ' where 1=0';

execute immediate v_CreateSql;

3、下次报错,请把你的出错情况提出来。我们怎改察信么知道什么错呢?

回答(2):

估计是缺少引号的缘故。v_name是varchar2的吧漏腔橘。
改返团成 execute immediate ' insert into addtopinfo values('||sysdate||'圆前,‘‘'||v_name||'’’)'; 试试,就是v_name变量在语句里要有引号 。拼接字符串时每两个“'” 会被解析成为一个“'”