web-dev-qa-db-ja.com

Oracleのプロシージャ内にテーブルを作成する方法は?

プロシージャ内にテーブルを作成したい。作成クエリを文字列に入れて、すぐに文字列を実行しようとしました。例えば:

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

これを行う方法はありますか?

8
jalal rasooly

これを試して。それはうまくいくはずです...

create or replace procedure hr.temp is
   var1 varchar2(4000);
BEGIN
   var1:='create table hr.temp2(
          id number)';
   EXECUTE IMMEDIATE var1;
end temp;
6
pahariayogi

m.r'a_horse_with_no_name 'の答えは正しいです。最初のポイントは、sysスキーマでテーブルを作成するべきではないということです。

2番目のポイントは、動的SQLにあります。動的SQLでは;文字を使用しないでください。

0
jalal rasooly