create or replace procedure myTbl
as
lvDate varchar2(50);
lvSql varchar2(1000);
begin
lvsql := 'create table mytbl ( id number(5))';
dbms_output.put_line(lvsql);
EXECUTE IMMEDIATE lvsql;
end;1)以上需要8i及以上版本。
2)触发器的脚本,只是改变lvsql的内容
as
lvDate varchar2(50);
lvSql varchar2(1000);
begin
lvsql := 'create table mytbl ( id number(5))';
dbms_output.put_line(lvsql);
EXECUTE IMMEDIATE lvsql;
end;1)以上需要8i及以上版本。
2)触发器的脚本,只是改变lvsql的内容
否则只能调用dbma_sql包
CREATE OR REPLACE PROCEDURE exec(STRING IN varchar2) AS
cursor_name INTEGER;
ret INTEGER;
str varchar2(500);
BEGIN
cursor_name := DBMS_SQL.OPEN_CURSOR;
str:='create table test1 as select * from table_name';DDL statements are run by the parse call, which performs the implied commit. DBMS_SQL.PARSE(cursor_name, str, DBMS_SQL.native);
ret := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;