Oracle数据库中的子程序之一存储过程_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle中的子程序之一存储过程

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

黑客防线网安网讯:  子程序就是能够接受参数并被其他程序所调用的命名PL/SQL块。PL/SQL子程序有两种类型,过程和函数。通俗地讲,过程用于执行一个操作,而函数用于返回一个结果值。同匿名PL/SQL块类似,子...

  子程序就是能够接受参数并被其他程序所调用的命名PL/SQLPL/SQL子程序有两种类型过程和函数通俗地讲过程用于执行一个操作,而函数用于返回一个结果值。同匿名PL/SQL块类似,子程序也有声明部分,执行部分和一个可选的异常处理部分,声明部分包含类型、游标、常量、变量、异常和嵌套子程序的声明。这些内容都针对当前的子程序有效,也就是说在子程序退出时声明的这些内容会自动失效。执行部分包含赋值语句、流程控制语句和Oracle的数据操作语句。异常处理部分包含异常处理程序。

   一、过程 (存储过程)

   过程是一个能执行某个特定操作的子程序。使用CREATE OR REPLACE创建或者替换保存在数据库中的一个子程序。

  示例1:声明存储过程,该过程返回dept表行数

DECLARE
  PROCEDURE getDeptCount
  AS
    deptCount INT;
  BEGIN
    SELECT COUNT(*) INTO deptCount FROM DEPT;
    DBMS_OUTPUT.PUT_LINE('DEPT表的共有记录数:'||deptCount);
  END getDeptCount;
BEGIN
  getDeptCount[()];
END;

  注意:此存储过程getDeptCount只在块运行时有效。

  示例2:创建不带参数的存储过程,该过程返回dept表行数

CREATE OR REPLACE PROCEDURE getDeptCount
AS | IS
deptCount int;
BEGIN
  SELECT COUNT(*) INTO deptCount FROM dept;
  DBMS_OUTPUT.PUT_LINE('dept表共有'||deptCount||'行记录');
END [getDeptCount];

   当我们创建的存储过程没有参数时,在存储过程名字后面不能有括号。在AS或者IS后至BEGIN之前是声明部分,存储过程中的声明不使用DECLARE关键字。同匿名PL/SQL块一样,EXCEPTION和声明部分都是可选的。

   当我们创建的过程带有错误时,我们可以通过SELECT * FROM USER_ERRORS查看,或者使用SHOW ERRORS [ PROCEDURE Proc_Name]查看。

   使用以下代码可以执行存储过程:

BEGIN
    getDeptCount;
END;

   以上存储过程还可以通过以下代码来简化调用:

EXEC getDeptCount[;]   
CALL  getDeptCount();

  注意:

  并不是所有的存储过程都可以用这种方式来调用

  定义无参存储过程时,存储过程名后不能加()

  在块中或是通过EXEC调用存储过程时可以省略()

  通过CALL调用无参存储过程必须加上()

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-12407-1.html
网站维护教程更新时间:2012-03-23 00:40:28  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer