Oracle存储过程
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度
eg:
CREATE OR REPLACE PROCEDURE BK_Table
AUTHID CURRENT_USER
//加上AUTHID CURRENT_USER表示调用者权限(invoker rights),以调用者身份执行,
没有加上调用者权限,在使用其他用户的时候,会找不到存储过程*
IS
v_sql varchar2(2000); //声明变量
BEGIN
v_sql:='begin drop_table_if_exists(:v1); end;'; //sql 语句
execute immediate v_sql using 'wf_1';
execute immediate('create table A as select * from B ');
END;
执行存储过程后,只是建立了存储过程,还需要执行
BEGIN
BK_Table;
COMMIT;
END;
或者
exec BK_Table