存储过程

存储过程是经过语法检查和编译的SQL语句
创建过程时,系统会对其进行编译,并将执行代码存储到数据库中。有名字,可接收参数,没有返回值。

创建时不执行,调用时才执行。
1.在SQL>提示符下调用过程,execute 过程名(参数 ...)
2.在PL/SQL块中调用过程,过程名(参数 …),可独立作为PL/SQL语句
可以在匿名块、其他的存储过程、函数中调用。
存储过程中可以直接执行DML语句(select、insert、update、delete),不能直接执行DDL语句。
存储过程中如需执行DDL语句,先把DDL语句存放在一个字符串变量中,然后通过execute immediate语句执行字符串内容,字符串内容必须符合SQL语法。用户从角色中获取的权限,在PL/SQL块中
存储过程中创建触发器实现主键自增长:
create or replace procedure pk_auto_increment_pro(t_name varchar2) is
v_ddl varchar2(2000);
begin
v_ddl := 'create or replace trigger pk_auto_increment_' || t_name ||
' before insert on ' || t_name ||
' for each row
begin
dbms_output.put_line(''赋值前id:'' ||:new.id);
select test_seq.nextval into :new.id from dual;
dbms_output.put_line(''赋值后id:'' ||:new.id);
end;';
execute immediate v_ddl;
end;

 create [or replace] procedure 过程名 [(参数名 参数模式 参数类型,...)] is|as 
[declaration] --定义部分
begin 
--执行部分
[exception] 
--异常处理部分
end [过程名];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容