当前位置:Gxlcms > 数据库问题 > PLSQL存储过程(基础篇)-转

PLSQL存储过程(基础篇)-转

时间:2021-07-01 10:21:17 帮助过:2人阅读

       知识回顾

如果经常使用特定操作,哪么可以考虑基于这些操作使用过程,简化开发和维护,可以充分实现代码共享,提高系统性能。

过程的分类:

(一)有过程参数

  (二)没有过程参数的              1.输入参数(默认是输入参数)              2.输出参数              3.输入输出参数 基本语法规则: Create or replace procedure procedure_name(argument1 [mode1] datatype1 , argument2 [mode2] datatype2 ……) Is [as] PL/SQL Block; 注意:当定义参数时,只能指定数据类型,不能指定长度. 范例一:无参数的过程 create or replace procedure a_time is begin dbms_session.set_nls(‘nls_date_format‘,‘‘‘yyyy-mm-dd‘‘‘); dbms_output.put_line(sysdate); end; / 执行过程:(调用无参数过程可以直接引用过程名) SQL> exec a_time; 2008-03-04                                                                      PL/SQL 过程已成功完成 范例二:具有输入参数的过程: SQL> create or replace procedure b_insert (i emp.id%type,n emp.name%type) 2 is 3 begin 4 insert into emp values(i,n); 5 commit; 6 end; SQL> 过程已创建。 执行这个过程: SQL> exec b_insert(‘14‘,‘peter_lin‘); PL/SQL 过程已成功完成。 SQL> select * from emp; ID          NAME                                                                 ---------- ----------                                                           14         peter_lin                                                            1          DICK_t                                                                可以看到,数据自动插入到了表格中。 范例三:带有输出参数的过程: SQL> create or replace procedure c_update(old varchar2,new emp.id%type,nam out emp.name%type) 2 is 3 begin 4 select name into nam from emp where id=old; 5 update emp set id=new where id=old; 6 commit; 7 end; SQL> 过程已创建。 执行这个过程:带有输出参数的过程,需要使用变量接收这个输出值。 SQL> declare 2 nn emp.name%type; 3 begin 4 c_update(&old,&new,nn); 5 dbms_output.put_line(‘被修改id的员工姓名:‘||nn); 6 end; 7 / 输入 old 的值: 14 输入 new 的值: 12 原值    4: c_update(&old,&new,nn); 新值    4: c_update(14,12,nn); 被修改id的员工姓名:peter_lin                                                   PL/SQL 过程已成功完成。 SQL> select * from emp; ID         NAME                                                                  ---------- ----------                                                           12         peter_lin                                                            1          DICK_t                                                                已选择2行。 范例四:带有输入输出参数的过程 SQL>create or replace procedure in_out 2 (n1 in out number,n2 in out number) is 3 v1 number; 4 v2 number; 5 begin 6 v1:=trunc(n1/n2); 7 v2:=mod(n1,n2); 8 n1:=v1; 9 n2:=v2; 10 end; SQL> 过程已创建。 执行这个过程: SQL>declare 2 a1 number:=&n1; 3 a2 number:=&n2; 4 begin 5 in_out(a1,a2); 6 dbms_output.put_line(‘除法的商‘||a1||‘,除法的余数:‘||a2); 7 end; SQL> 输入 n1 的值: 100 原值    2: a1 number:=&n1; 新值    2: a1 number:=100; 输入 n2 的值: 3 原值    3: a2 number:=&n2; 新值    3: a2 number:=3;

除法的商33,除法的余数:1  

PLSQL存储过程(基础篇)-转

标签:

人气教程排行