WEB开发网
开发学院数据库Oracle Oracle中的子程序之一存储过程 阅读

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

 2009-03-12 13:10:57 来源:WEB开发网   
核心提示: 当我们创建的过程带有错误时,我们可以通过SELECT * FROM USER_ERRORS查看,Oracle中的子程序之一存储过程(2),或者使用SHOW ERRORS [ PROCEDURE Proc_Name]查看, 使用以下代码可以执行存储过程:BEGIN getDeptCount

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

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

BEGIN
    getDeptCount;
END;

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

EXEC getDeptCount[;]   
CALL  getDeptCount();

注意:

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

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

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

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

示例3:创建带有输入参数的存储过程,该过程通过员工编号打印工资额

CREATE OR REPLACE PROCEDURE getSalaryByEmpNo(eNo NUMBER)  --参数的数据类型不能指定长度
AS
salary emp.sal%TYPE;
BEGIN
  SELECT SAL INTO salary  FROM EMP WHERE EMPNO=eNo;
  DBMS_OUTPUT.PUT_LINE(eNo||'号员工的工资为'||salary);
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('没有找到该编号的员工');
END;

当定义的存储过程含有参数时,参数的数据类型不能指定长度。参数还有输入和输出之分,本例中没有指定,默认情况为输入参数,也可显示的指定某个参数是输入参数,如(eNo IN NUMBER)。同示例1不同,该例中加入了异常处理。同示例1类似可以使用下面的两种方式调用存储过程:

BEGIN
  getSalaryByEmpNo(7788);
END;

或者

EXEC getSalaryByEmpNo(7788); 

上一页  1 2 3 4  下一页

Tags:Oracle 子程序 之一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接