文档详情

存储过程的编写.doc

发布:2017-04-02约4.99千字共6页下载文档
文本预览下载声明
存储过程的编写 前面我们讲解PL/SQL块的例子不是存储过程,每次都要把所有代码执行一遍,这样很不方便,接下来我们开始引入存储过程。Oracle存储过程是pl/sql语句的预编译集合。 使用存储过程的优势: (1)允许模块化程序设计 (2)执行高效 (3)减少网络流量 Oracle提供三种存储过程 过程:由过程名、参数和程序体组成。 函数:与过程类似,只是函数有返回值。 程序包:一组相关的过程和函数,由包名,包头和包体组成。 1、存储过程的编写格式 基本结构 PROCEDURE?Name?[(Parameter[,Parameter,])] IS|AS ??[Local?Declarations] BEGIN ??Execute?statements; ??[EXCEPTION?Exception?Handlers] END?[Name]; 举例 CREATE OR REPLACE PROCEDURE prc_a_modify_aab004 (prm_aab001 IN VARCHAR2, prm_aab004_new IN VARCHAR2, prm_aab004_old OUT VARCHAR2, prm_AppCode OUT NUMBER, prm_ErrorMsg OUT VARCHAR2) IS CURSOR cur_t_ab01_aab004 IS SELECT aab004 FROM t_ab01 WHERE aab001 = prm_aab001 and rownum = 1; begin prm_AppCode := 1; OPEN cur_t_ab01_aab004; LOOP FETCH cur_t_ab01_aab004 INTO prm_aab004_old; EXIT WHEN cur_t_ab01_aab004%NOTFOUND; END LOOP; CLOSE cur_t_ab01_aab004; IF prm_aab004_old IS NULL THEN prm_AppCode := -1; prm_ErrorMsg := 没有找到单位编号为||prm_aab001||的单位!; else UPDATE t_ab01 SET aab004 = prm_aab004_new WHERE aab001 = prm_aab001; END IF; EXCEPTION WHEN OTHERS THEN prm_AppCode := -1; prm_ErrorMsg := 更新单位名称失败!; END prc_a_modify_aab004; / 2、执行存储过程 2.1在块中执行过程 SET SERVEROUTPUT ON DECLARE v_aab001 varchar2(20); v_aab004 varchar2(100); v_old_aab004 varchar2(100); n_appcode number; v_errmsg varchar2(100); BEGIN v_aab001: v_aab004:=天津肯德基店_2015; prc_a_modify_aab004(v_aab001,v_aab004,v_old_aab004,n_appcode,v_errmsg); DBMS_OUTPUT.PUT_LINE(原单位名称:||v_old_aab004); DBMS_OUTPUT.PUT_LINE(返回值:||n_appcode); DBMS_OUTPUT.PUT_LINE(返回信息:||v_errmsg); END; / Commit; 2.2在pl/sql开发环境中执行存
显示全部
相似文档