【练习 1】编写显示部门信息的存储过程 DEPT_LIST,要求统计出部门个数。
参数传递
参数的作用是向存储过程传递数据,或从存储过程获得返回结果。正确的使用参数可以大大增加存储过程
的灵活性和通用性。
参数的类型有三种,如下所示。
Sql 代码
1. IN定义一个输入参数变量,用于传递参数给存储过程
2. OUT定义一个输出参数变量,用于从存储过程获取数据
3. INOUT定义一个输入、输出参数变量,兼有以上两者的功能
参数的定义形式和作用如下:
参数名 IN 数据类型 DEFAULT 值;
定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程时,主程序的实际参数可以是常量、
有值变量或表达式等。DEFAULT 关键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指
明参数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的值,但不能对其进行赋值。
参数名 OUT 数据类型;
定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过程中返回值给主程序。
在调用存储过程时,主程序的实际参数只能是一个变量,而不能是常量或表达式。在存储过程中,参数变
量只能被赋值而不能将其用于赋值,在存储过程中必须给输出变量至少赋值一次。
参数名 IN OUT 数据类型 DEFAULT 值;
定义一个输入、输出参数变量,兼有以上两者的功能。在调用存储过程时,主程序的实际参数只能是一个
变量,而不能是常量或表达式。DEFAULT 关键字为可选项,用来设定参数的默认值。在存储过程中,变
量接收主程序传递的值,同时可以参加赋值运算,也可以对其进行赋值。在存储过程中必须给变量至少赋
值一次。
如果省略 IN、OUT 或 IN OUT,则默认模式是 IN。
【训练 1】 编写给雇员增加工资的存储过程 CHANGE_SALARY,通过 IN 类型的参数传递要增加工资的
雇员编号和增加的工资额。
步骤 1:登录 SCOTT 账户。
步骤 2:在 SQL*Plus 输入区中输入以下存储过程并执行:
Sql 代码
1. CREATEORREPLACEPROCEDURECHANGE_SALARY(P_EMPNOINNUMBERDEFAUL
T7788,P_RAISENUMBERDEFAULT10)
2. AS
3. V_ENAMEVARCHAR2(10);
4. V_SALNUMBER(5);
5. BEGIN
6. SELECTENAME,SALINTOV_ENAME,V_SALFROMEMPWHEREEMPNO=P_EMPN
O;
7. UPDATEEMPSETSAL=SAL+P_RAISEWHEREEMPNO=P_EMPNO;
8. DBMS_OUTPUT.PUT_LINE('雇员'||V_ENAME||'的工资被改为'||
TO_CHAR(V_SAL+P_RAISE));