存储过程是一种命名的PL/SQL程序块,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),可以有参数、输入输出参数,通常没有返回值。不可以直接被SQL语句调用或执行,只能通过EXECUTE命令执行或在PL/SQL程序块内部被调用。
存储过程的优点
1.一般的T-SQL语句是每次执行都要编译一次,然而存储过程是一个编译过的代码块,可以不用再编译直接调用,所以执行效率比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代一大堆的T-SQL语句,所以也能降低网络的通信量(流量),提高通信速率。
3.当数据库进行复杂操作时(如对多表进行Update、Insert、Query、Delete时),可将此复杂作用存储过程封装起来与数据库提供的事务处理结合一起使用。
4.存储过程代码精简一致,可以重复使用。
5.安全性高,可设定只有某用户才具有对指定存储过程的使用权。
存储过程的创建
基本语法:create [or replace] procedure pro_name[(parameter1[,parameter2]...)] is|as
begin
plsql_sentence;
[exception]
[dowith_sentence;]
end [pro_name];
● pro_name:存储过程名称,如果数据已经存在此名称,则可以指定“or replace”关键字,这样新的存储过程将覆盖原来的存储过程。
● parameter1:存储过程的参数,输入参数需在后指定“in”关键字,输出参数需在后指定“out”关键字。参数类型不能指定长度。
● plsql_sentences:PL/SQL语句,它是存储过程功能实现的主体。
● dowith_sentences: 异常处理语句,也是PL/SQL语句,在代码中抛异常用 raise+异常名,这是一个可选择项。
注意:"parameter1"是存储过程被调用或执行时用到的参数,而不是存储过程内定义的内部变量。内部变量要在"is|as"关键字后面定义,并使用分号(;)结束。
存储过程的调用
execute procedure_name --存储过程如果有参数,后面加参数格式为:@参数名=value,也可直接为参数值value.
存储过程的删除
drop procedure procedure_name --在存储过程中能调用另外一个存储过程,而不能删除另外一个存储过程