尝试使用execute immediate创建表

时间:2017-02-18 10:08:37

标签: oracle plsql

我正在尝试使用下面的代码创建一个表。

set serveroutput on;
DECLARE
cursor c1 is select '''create table demo1 (demo varchar2(100))''' c2 from dual;
testvar  c1%rowtype;
BEGIN
open c1;
fetch c1 into testvar;
close c1;
execute immediate testvar.c2;
END;

但它正在给予

ORA-00900:无效的SQL语句 ORA-06512:第8行 00900. 00000 - “无效的SQL语句”

此代码有什么问题。

1 个答案:

答案 0 :(得分:3)

如果您真的想使用cwise_op_cosh.cc块动态地执行此操作,除了这三行代码之外,您只需要其他内容。无需从双重选择。

PLSQL

注意:从select中选择create table语句没有任何意义。如果您有任何其他具体要求,请提及,以便人们可以在这里为您提供帮助。

顺便说一句,一旦你删除了威廉提到的额外declare vsql varchar2 (100) := 'create table demo1 (demo varchar2(100))'; begin execute immediate vsql; end; ,你就会简单地阻止

'