PL/SQL 存储过程入门小例子
2015-06-12 13:50
429 查看
1.为什么要有存储过程?
过程是指用于执行特定操作的PL/SQL块。如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程。(类似C函数,Java方法)
2.oracle的存储过程里的传递参数是怎么设定的?
当建立过程时,既可以指定过程参数,也可以不提供任何参数。当过程需要传递参数时,过程参数包括输入参数、输出参数和输入输出参数,其中输入参数(IN)用于接收调用环境的输入数 据,输出参数(OUT)用于将输出数据传递到调用环境,而输入输出参数(IN OUT)不仅要接收输入数据,而且还要输出数据到调用环境。(其中in,out,in out 就是用来表示参数传递的方式的,其中若参数后面没有这个标识符,则默认是in型的,也就是输入参数)
3.建立存储过程的命令是什么,语法又是什么?
命令:create or replace procedure
语法:CREATE [OR REPLACE]PROCEDURE PROCEDURE_name
(argument1 [mode1] datatype1,argument2 [mode2] datatype2, …)
IS [AS]
PL/SQLBlock;
如上所示,procedure_name 用于指定过程名,argument 用于指定过程参数,IS 或 AS用于开始PL/SQL块。(注意,当定义参数时,只能指定数据类型,不能指定数据长度;oracle的in(或者out,in out)是放在参数之后的,如:a number out)
4.怎么让建立好的过程接受输入的参数值?
方法1:直接在调用过程时,给参数写入值。如add(1,2);(假设已经写好了add(a number,b number)这个存储过程,用来计算a + b)
方法2:在PL/SQL调用存储过程时,在参数前加&符号,如add(&c,&d),PL/SQL会弹出输入c和d值的对话框(假设已经定义好c,d变量)
小例子:
建立一个,计算出a + b 和 a - b 的存储过程,名为test(在PL/SQL中实现)
(1) .在PL/SQL中的SQL Window输入框中输入:
(3) .调用存储过程,继续输入如下代码:
过程是指用于执行特定操作的PL/SQL块。如果客户应用经常需要执行特定操作,那么可以考虑基于这些操作建立过程。(类似C函数,Java方法)
2.oracle的存储过程里的传递参数是怎么设定的?
当建立过程时,既可以指定过程参数,也可以不提供任何参数。当过程需要传递参数时,过程参数包括输入参数、输出参数和输入输出参数,其中输入参数(IN)用于接收调用环境的输入数 据,输出参数(OUT)用于将输出数据传递到调用环境,而输入输出参数(IN OUT)不仅要接收输入数据,而且还要输出数据到调用环境。(其中in,out,in out 就是用来表示参数传递的方式的,其中若参数后面没有这个标识符,则默认是in型的,也就是输入参数)
3.建立存储过程的命令是什么,语法又是什么?
命令:create or replace procedure
语法:CREATE [OR REPLACE]PROCEDURE PROCEDURE_name
(argument1 [mode1] datatype1,argument2 [mode2] datatype2, …)
IS [AS]
PL/SQLBlock;
如上所示,procedure_name 用于指定过程名,argument 用于指定过程参数,IS 或 AS用于开始PL/SQL块。(注意,当定义参数时,只能指定数据类型,不能指定数据长度;oracle的in(或者out,in out)是放在参数之后的,如:a number out)
4.怎么让建立好的过程接受输入的参数值?
方法1:直接在调用过程时,给参数写入值。如add(1,2);(假设已经写好了add(a number,b number)这个存储过程,用来计算a + b)
方法2:在PL/SQL调用存储过程时,在参数前加&符号,如add(&c,&d),PL/SQL会弹出输入c和d值的对话框(假设已经定义好c,d变量)
小例子:
建立一个,计算出a + b 和 a - b 的存储过程,名为test(在PL/SQL中实现)
(1) .在PL/SQL中的SQL Window输入框中输入:
create or replace procedure test ( p1 in out number,p2 in number,r1 out number,r2 out number) as begin r1 := p1 + p2; r2 := p1 - p2; p1 := 888; end test;(2) .点击 Execute(F8) . 如果没有错误,可以在PL/SQL左侧栏的 All objects 下的 Procedures 文件夹下看到你刚才建立好的存储过程
(3) .调用存储过程,继续输入如下代码:
declare a number(3) := 100; b number(4) := 1000; c number(5) := 100; d number(4) := 100; begin test(a,b,c,d); --在PL/SQL中可以<span style="color:#ff0000;"><strong>在语句块中</strong></span>直接引用,但在Sqlplus(或者commend中)需要call或者execute命令 dbms_output.put_line('a + b = ' || c); dbms_output.put_line('a - b = ' || d); dbms_output.put_line('但a的值为:' || a || ', b的值为:' || b); end;(4) .选中上面这段代码,点击 Execute(F8),就可以在输出框里看到:
a + b = 1100 a - b = -900 但a的值为:888, b的值为:1000总结:上面写的test存储过程里,p1为输入输出参数,p2为输入参数,r1及r2为输出参数。以该存储过程为主体理解,面对输入参数只取其值,面对输出参数只给其赋值,面对输入输出参数,先取其值,再给其赋值。如:a作为输入输出参数传递给p1,存储过程先取p1的值100,然后再将888赋值给p1,这样a的值就变为888了。
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- SQL Server 语句操纵数据库
- 表空间操作
- PreparedStatement中in子句的处理
- SQL(结构化查询语句)
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- linux快速部署mysql服务器