如何在oracle中创建一个程序表?

时间:2014-01-20 11:33:48

标签: sql oracle stored-procedures create-table

我想在一个过程中创建一个表。我试图将创建查询放在一个字符串中,然后立即执行该字符串。例如:

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
.
.
.

有什么方法可以做到这一点吗?

2 个答案:

答案 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中使用;字符。