我想在一个过程中创建一个表。我试图将创建查询放在一个字符串中,然后立即执行该字符串。例如:
create or replace procedure hr.temp is
var1 varchar2(4000);
begin
var1:='create table hr.temp(
id number)';
execute immediate var1;
end temp;
但是当我执行此程序时,我收到错误:
ORA-00911: invalid character
ORA-06512: at "SYS.TEMP", line 6
.
.
.
有什么方法可以做到这一点吗?
答案 0 :(得分:5)
试试这个。它应该工作......
create or replace procedure hr.temp is
var1 varchar2(4000);
BEGIN
var1:='create table hr.temp2(
id number)';
EXECUTE IMMEDIATE var1;
end temp;
答案 1 :(得分:0)
m.r'a_horse_with_no_name'的答案是正确的。第一点是我不应该在sys模式中创建表。
第二点是在动态sql中我不应该在动态sql中使用;
字符。