Oracle儲存過程

2021-06-04 19:34:37 字數 2275 閱讀 5623

1、 在plsql中新建包,在包中定義儲存過程:

create or replace package l_image_core is                                 

--******************************************

--功能說明:取消次品單資訊

--修改次品單總資訊及次品單詳細資訊的有效狀態為'y',

--如果是缺少的檔案,則需要修改單類影像檔案索引表(image_doc_index)中有效狀態為'y'

--次品單在未處理的情況下,不對同一單下發多次,返回標識提醒,但不返回異常

--下發次品單同時將對應影像是否有效設定為n

--引數說明:

--輸入:

-- 次品單流水號

--輸出:

-- p_sign 執行結果:y-成功;n-失敗;e-存在未處理

-- p_message 結果描述

--修改記錄:

-- create by ***xx

--******************************************

procedure quash_failed_info(p_image_failed_no in varchar2,

p_sign out varchar2,

p_message out varchar2) is

v_err_code varchar2(10);

v_prompt varchar2(1000);

v_count integer;

--v_return_reason image_failed_detail.return_reason%type;

--select image_failed_detail.document_id from image_failed_detail where image_failed_detail.image_failed_no=p_image_failed_no;

begin

select count(ifd.document_id) into v_count from image_failed_detail ifd where ifd.image_failed_no=p_image_failed_no;

if(v_count=0) then

p_sign := 'n';

p_message := '傳入的次品單號不存在。';

return;

end if;

begin

update image_failed_detail ifd set ifd.deal_flag = 'y' where ifd.image_failed_no=p_image_failed_no;

update image_failed imf set imf.failed_deal_status = 'y' where imf.image_failed_no=p_image_failed_no;

update image_doc_index idi set idi.valid_flag='y' where idi.document_id in

(select ifd.document_id from image_failed_detail ifd where ifd.image_failed_no=p_image_failed_no

and (ifd.return_reason='9000' or ifd.return_reason='9001'));

--commit;

p_sign := 'y';

p_message := '次品單撤銷成功!';

end;

exception

when others then

p_sign := 'n';

p_message := substrb('修改頁碼時異常:' || sqlerrm, 1, 500);

-- logging the error

v_err_code := null;

pub_error_handle.exception_no_raise('l_image_core.quash_failed_info',

v_err_code,

p_message,

v_prompt);

end quash_failed_info;

end l_image_core;

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...

ORACLE儲存過程

自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...

Oracle 儲存過程

create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...