0

Oracle PL/SQL には、このコーディングがあり、コンパイラ エラーが発生します。理由はわかりませんが、すべてを持っているように見えます...

助けてください。

ありがとう

 ORA-06550: line 6, column 5:
PLS-00103: Encountered the symbol "CREATE" when expecting one of the following:

   ( begin case declare end exit for goto if loop mod null
   pragma raise return select update while with <an identifier>
   <a double-quoted delimited-identifier> <a bind variable> <<
   continue close current delete fetch lock insert open rollback
   savepoint set sql execute commit forall merge pipe purge
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

コードは

begin
  for c in (select id from tmp_A)
  loop
    dbms_output.put_line(c.id);

    create table tmp_c as 
    select B.name from tmp_B B where B.id = c.id;   

    drop table tmp_c;
  end loop;
end;
/
4

1 に答える 1

3

PL/SQL で ddl ステートメント (CREATE、DROP、ALTER など) を直接呼び出すことはできません。ただし、すぐに実行するステートメントを使用できます。

begin
  EXECUTE IMMEDIATE 'CREATE TABLE MYTABLE(DT DATE)';
end;

見る:

http://www.orafaq.com/wiki/PL/SQL_FAQ#Can_one_call_DDL_statements_from_PL.2FSQL.3F
于 2012-07-02T15:25:34.963 に答える