create or replace procedure create_table is
c_sql varchar2(500);
begin
  c_sql:='create table my_table(col1 varchar2(50))';
  execute immediate c_sql;
end create_table;删除my_table只需将c_sql:='drop table my_table';

解决方案 »

  1.   

    在oracle8.0.5中:
    用dbms_sql来实现
    CREATE OR REPLACE PROCEDURE demo AS
        cursor_name INTEGER;
        rows_processed INTEGER;
    BEGIN
        cursor_name := dbms_sql.open_cursor;
        DBMS_SQL.PARSE(cursor_name, 'create table my_table(col1 varchar2(50))',
                       dbms_sql.native);
        dbms_sql.execute(cursor_name);
        DBMS_SQL.close_cursor(cursor_name);
    EXCEPTION
    WHEN OTHERS THEN
        DBMS_SQL.CLOSE_CURSOR(cursor_name);
    END;
      

  2.   

    sql := 'create table table_name(...)';
    execute immediate sql;