资源描述:
《PLSQL函数参数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、游标for循环--查询所有员工编号,姓名,工资declarecursoremp_cursorisselect*fromemployees;beginforeINemp_cursorloopdbms_output.put_line('编号:'
2、
3、e.employee_id
4、
5、'姓名:'
6、
7、e.last_name
8、
9、'工资:'
10、
11、e.salary);endloop;end;--查询所有员工编号,姓名,工资(参数)declarecursoremp_cursor(p_dept_idemployees.departm
12、ent_id%type)isselect*fromemployeeswheredepartment_id=p_dept_id;beginforeinemp_cursor(90)loopdbms_output.put_line('编号:'
13、
14、e.employee_id
15、
16、'姓名:'
17、
18、e.last_name
19、
20、'工资:'
21、
22、e.salary);endloop;end;declarebeginforein(select*fromemployeeswheredepartment_id=60)loopdbms_ou
23、tput.put_line('编号:'
24、
25、e.employee_id
26、
27、'姓名'
28、
29、e.last_name
30、
31、'工资'
32、
33、e.salary);endloop;end;--隐式游标--用户输入一个任意的部门编号,更新这个部门员工的工资如果有员工的工资被更新,输出‘更新成功’,有多少个员工被更新,如果没有,输出‘部门不存在’v_deptidnumber:=&input;beginupdateemployeessetsalary=salary+1wheredepartment_id=v_deptid;ifsql%
34、foundthendbms_output.put_line('更新成功,有'
35、
36、SQL%ROWCOUNT
37、
38、'个员工被更新');elsedbms_output.put_line('部门不存在');endif;commit;end;--动态游标--用户输入一个字母,输入E,查的是员工姓名,输入D,查的是部门名称selectcount(employee_id)fromemployees函数和过程ORACLE提供可以把PL/SQL程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。过程和函数统称
39、为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。创建函数创建函数的语法如下:CREATE[ORREPLACE]FUNCTIONfunction_name[(argment[{IN
40、OUT
41、INOUT}]Type,argment[{IN
42、OUT
43、INOUT}]Type]RETURNreturn_type{IS
44、AS}<类型.变量的说明>BEGINFUNCTION_bo
45、dyEXCEPTION其它语句END;CREATEORREPLACEFUNCTIONget_salary(Dept_noNUMBER,Emp_countOUTNUMBER)RETURNNUMBERISV_sumNUMBER;BEGINSELECTSUM(sal),count(*)INTOV_sum,emp_countFROMempWHEREdeptno=dept_no;RETURNv_sum;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('你需要的数据
46、不存在!');WHENOTHERSTHENDBMS_OUTPUT.PUT_LINE(SQLCODE
47、
48、'---'
49、
50、SQLERRM);ENDget_salary;调用函数方法函数声明时所定义的参数称为形式参数,应用程序调用时为函数传递的参数称为实际参数。应用程序在调用函数时,可以使用以下三种方法向函数传递参数:第一种参数传递格式称为位置表示法,格式为:argument_value1[,argument_value2…]DECLAREV_numNUMBER;V_sumNUMBER;BEGINV_sum:=ge
51、t_salary(30,v_num);DBMS_OUTPUT.PUT_LINE('30号部门工资总和:'
52、
53、v_sum
54、
55、',人数:'
56、
57、v_num);END;第二种参数传递格式称为名称表示法,格式为:argument=>parameter[,…]其中:argument为形式参数,它必须与函数定义时所声明的形式参数名称相同。Parameter为实际参数。在这种格式中,形势参数与实际参数成对出现,相互间关系唯一确定