Oracle数据库子程序之存储过程和函数调用
PL/SQL——无名块,不存储在数据库中,不能从其他的PL/SQL块中调用。而下面介绍的结构——函数、过程、包和触发器都是有名块,它们可以存储在数据库中,并且可以在需要的任何地方进行调用。
1、开发一个存储过程和函数的步骤:
(1).用系统编辑器或文字处理软件写一个含有CREATE PROCEDURE或CREATE FUNCTION语句的脚本文件;(2.) 在写CREATE PROCEDURE或CREATE FUNCTION语句时,应该充分考虑运行时出错的处理,即应该考虑例外处理EXCEPTION;(3). 在SQL*PLUS中运行脚本文件,将过程或函数的源代码编译成编译代码P_code,把两种代码存储到数据库中;(4). 调试编译错误;(5). 在Oracle环境下调用开发的函数或存储过程。
注意:
不论编译是否成功,创建过程/函数命令CREATE PROCEDURE或CREATE FUNCTION都将自动把其源代码存入数据库中,而编译代码只有在编译成功后才能存入数据库中。
只有编译代码被存入到数据库的存储过程和函数才能被调用。
2.1、创建过程:
创建过程语句的语法如下所示:
IN、OUT、IN OUT三种模式的描述:
模 式 |
描 述 |
IN(默认模式)参数 (输入参数) |
用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。 |
OUT参数 (输出参数) |
用来从过程中返回值给调用者,不能将此参数的值赋给另一个变量,不能是常量或表达式。在过程体内,必须给OUT参数赋值。 |
IN OUT参数 (输入输出参数) |
既可以从调用者向过程中传递值,执行过程后还可返回可能改变了的值给调用者。 |