PL-SQL存储过程与函数.docVIP

  • 8
  • 0
  • 约5.19千字
  • 约 6页
  • 2021-09-26 发布于山东
  • 举报
PL-SQL存储过程与函数. PL-SQL存储过程与函数. PAGE / NUMPAGES PL-SQL存储过程与函数. PL/SQL 存储过程与函数 1、存储过程 存储过程的参数 形式参数和实际参数, 例如,有如下一个存储过程, 该过程接收一个作家代码和一个工资值,将该作家的工资改为接收到的工资值。 Java 代码 1. create or replace procedure updateauths( p_authscode auths.author_code%type, p_authssalaryauths.salary%type) as begin 6. update auths set salary=p_authssalary where author_cod e=p_authscode; commit; end updateauths; 下面的 PL/SQl 块调用 updateauths 存储过程,将代码为 A00011 的作家的工资改 为 350 元。 Java 代码 declare v_authorcode auths.author_code%type:=A00011; v_salary auths.salary%type:=350; begin updateauths(v_authorcode,v_salary); end; v_authorcode 、 v_salary 作为参数传递到存储过程 updateauths 中,这些参数是实际参数,简称实参。 p_authscode 、p_authssalary 就是形式参数,简称形参。 参数定义中, IN 、OUT和 IN OUT代表参数的三种不同模式: IN :当调用存储过程时,该模式的形参接收对应实参的值,并且该是只读的, 即不能被修改。默认为 IN。 OUT:该形参被认为只能写,既只能为其赋值。在存储过程中不能读它的值。返 回时,将该形参值传给相应的实参。 IN OUT:都允许。 Java 代码 1. create or replace procedure updateauthssalary( 2. p_author_code in out auths.author_code%type, 3. p_salary in number, 4. p_name out auths.name%type) is v_salary_temp number; -- 定义存储过程中的局部变量 begin select salary into v_salary_temp from auths where au thor_code=p_author_code; 8. if v_salary_temp300 then 9. update auths set salary=p_salary where author_code =p_author_code; end if; select name into p_name from auths where author cod e=p_author_code; 12.end updateauthssalary; (1)参数的数据类型 在定义一个存储过程参数时,不能指定 CHAR类型和 VARCHAR2类型形参的长度,也不能指定 NUMBER形参的精度和标度。 这些约束由实参来传递。 例如,下面的存储过程定义不合法,将产生一个编译错误: Java 代码 1. create or replace procedure proc_auths( -- 参数定义了类型长度,将产生编译错误。 3. p_code in out varchar2( 6), 4. p_salary out number(8, 2)) as begin select salary into p_salary from auths where author_ code=p_code; 7. end proc_auths; 修改上面存储过程的定义为: Java 代码 1. create or replace procedure proc_auths( -- 参数定义了类型长度,将产生编译错误。 3. p_code in out varchar2, 4. p_salary out number) as 5. begin select salary into p_salary from auths where author_ code=p_code; end proc_auths; p_code 的长度约束和 p_salary 的精度,标度约束由实参传递。

文档评论(0)

1亿VIP精品文档

相关文档