tcbs_批量儲存過程_輸出引數out與異常的關係
PROCEDURE proc_FINDNEXTQUEUE ( in_QUETYPCATCD IN QueTypCat.QUETYPCATCD%TYPE,
in_NTWKNODENBR IN Que.AssignedNtwkNodeNbr%TYPE,
in_POSTDATE IN DATE,
in_DEBUGYN IN CHAR,
out_QueNbr OUT Que.QueNbr%TYPE,
out_ERRORNBR OUT NUMBER,
out_ERRORMSG OUT VARCHAR2,
out_ORAERRORMSG OUT VARCHAR2 )
/************************************************************************************************/
/***** *****/
/***** PROCEUDRE NAME: pack_BATCHAUTO.proc_FINDNEXTQUEUE *****/
/***** *****/
/***** DESCRIPTION: This procedure will find the next queue to be assigned *****/
/***** and return the number to the calling procedure. *****/
/***** *****/
/***** *****/
/***** MODIFICATION HISTORY: *****/
/***** *****/
/***** 2/6/2006 - MSG - Rewritten to only find the next queue, not copy them all *****/
/***** *****/
/***** 12/12/2005, Modified by Sachin at RSI for new Month Code Parameter *****/
/***** while calculating schedule date and copying templates with *****/
/***** RequiredNtwkNodeNbr as NULL *****/
/***** *****/
/************************************************************************************************/
AS
/***************************************************************************************/
/***** CURSOR VARIABLE *****/
/***************************************************************************************/
CURSOR curs_QUETEMPLATE ( cpsQueTypCatCd QueTypCat.QueTypCatCd%TYPE ) IS
SELECT A.QueNbr, A.EffDateCalc, B.CalPeriodCd, B.DayNbr, B.WeekDayCd, B.MonthCd,
A.Priority, A.SeqNbr, A.RequiredNtwkNodeNbr
FROM Que A, QueTyp B, QueTypCat C
WHERE A.QueTypCd = B.QueTypCd
AND B.QueTypCatCd = C.QueTypCatCd
AND C.QueTypCatCd = cpsQueTypCatCd
AND A.TemplateYN = 'Y'
AND (( A.RequiredNtwkNodeNbr = in_NTWKNODENBR) OR ( A.RequiredNtwkNodeNbr IS NULL) ) -- Modified by Sachin at RSI on 12/12/2005
AND (( A.DateLastCopied < in_POSTDATE) OR (A.DateLastCopied IS NULL ) )
ORDER BY A.Priority , A.SeqNbr ;
/************************************************************************************/
/***** OSI ERROR PROCESSING VARIABLES *****/
/************************************************************************************/
OSI_GENERAL_ERROR EXCEPTION;
lvnErrorNbr INTEGER;
lvnUserPersNbr INTEGER;
lvsActvMsg VARCHAR2(100);
lvsSubProcErrorMsg VARCHAR2(100);
lvsORACLEMsg VARCHAR2(100);
/************************************************************************************/
/***** GENERAL PROCEDURE VARIABLES *****/
/************************************************************************************/
OSI_FOUND_A_QUEUE EXCEPTION;
lvnQueNbr Que.QueNbr%TYPE;
lvnPriority Que.Priority%TYPE;
lvnLastPriority Que.Priority%TYPE;
lvnSeqNbr Que.SeqNbr%TYPE;
lvsEffDateCalc Que.EffDateCalc%TYPE;
lvdPostDate DATE;
lvsCalPeriodCd QueTyp.CalPeriodCd%TYPE;
lvsWeekDayCd QueTyp.WeekDayCd%TYPE;
lvnDayNbr QueTyp.DayNbr%TYPE;
lvsMonthCd QueTyp.MonthCd%TYPE;
lvnRequiredNtwkNodeNbr Que.AssignedNtwkNodeNbr%TYPE;
lvsCopy CHAR(1);
/************************************************************************************/
/***** PROCEDURE CONSTANTS *****/
/************************************************************************************/
lcsDebugProcCd CONSTANT VARCHAR2(4) := 'CAQU';
BEGIN
lvdPostDate := TO_DATE(TO_CHAR(in_POSTDATE, 'MM-DD-YYYY'), 'MM-DD-YYYY');
lvnLastPriority := -1;
lvsActvMsg := 'Opening the cursor curs_QUETEMPLATE';
OPEN curs_QUETEMPLATE ( in_QUETYPCATCD ) ;
LOOP
lvsActvMsg := 'Fetch curs_QUETEMPLATE for quetypcatcd';
FETCH curs_QUETEMPLATE
INTO lvnQueNbr ,
lvsEffDateCalc ,
lvsCalPeriodCd ,
lvnDayNbr ,
lvsWeekDayCd,
lvsMonthCd,
lvnPriority,
lvnSeqNbr,
lvnRequiredNtwkNodeNbr;
EXIT WHEN curs_QUETEMPLATE%NOTFOUND;
lvsActvMsg := 'Executing proc_SCHEDATE';
proc_SCHEDATE (lvsCalPeriodCd, lvnDayNbr, lvsWeekDayCd, lvsMonthCd, lvdPostDate, in_DEBUGYN, -- Modified by Sachin at RSI on 12/12/2005
lvsCopy, lvnErrorNbr, lvsSubProcErrorMsg, lvsORACLEMsg );
IF ( lvnErrorNbr > 0 ) THEN
lvsActvMsg := lvsSubProcErrorMsg;
RAISE OSI_GENERAL_ERROR;
END IF;
IF lvsCopy = 'Y' THEN
RAISE OSI_FOUND_A_QUEUE;
End If;
END LOOP;
out_QueNbr := 0;
EXCEPTION
WHEN OSI_FOUND_A_QUEUE THEN
out_QueNbr := lvnQueNbr;
out_ERRORNBR := 0;
WHEN OSI_GENERAL_ERROR THEN
IF ( lvnErrorNbr > 0 ) THEN
out_ERRORNBR := lvnErrorNbr;
ELSE
out_ERRORNBR := 1001;
END IF;
out_ORAERRORMSG := lvsORACLEMsg;
out_ERRORMSG := lvsActvMsg||'-'||lcsDebugProcCd;
WHEN OTHERS THEN
lvsORACLEMsg := SUBSTR(SQLERRM, 1, 100);
out_ORAERRORMSG := lvsORACLEMsg;
out_ERRORNBR := ABS(SQLCODE);
out_ERRORMSG := lvsActvMsg;
END proc_FINDNEXTQUEUE;
小結:儲存過程的輸出引數可以在異常中輸出,當然一般不發生異常則正常輸出
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-734772/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tcbs_批量儲存過程_plsql事務_savepoint_異常儲存過程SQL
- tcbs_批量儲存過程_輸入引數為空與非空的分支編寫儲存過程
- 在sqlplus中呼叫in out輸入輸出引數的儲存過程SQL儲存過程
- 帶輸出引數的儲存過程儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- Oracle帶輸入輸出引數的儲存過程Oracle儲存過程
- 使用帶有輸出引數的儲存過程儲存過程
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- tcbs_批量儲存過程_sql_case when_示例儲存過程SQL
- MySQL 儲存過程引數IN OUT INOUT對比MySql儲存過程
- oracle procedure 儲存過程輸入及輸出in out示例Oracle儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- C#中呼叫SQL儲存過程(帶輸入輸出引數的例子)C#SQL儲存過程
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- mysql儲存過程的引數MySql儲存過程
- .NET用使用儲存過程獲取輸出引數的程式碼示例!儲存過程
- 詳解MySQL儲存過程引數有三種型別(in、out、inout)MySql儲存過程型別
- MySQL儲存過程的異常處理方法MySql儲存過程
- 使用in out引數模式的過程模式
- 使用out引數模式的過程模式
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- oracle儲存過程plsql_sp_多個out引數測試語法Oracle儲存過程SQL
- MySQL儲存過程中捕獲異常的方法MySql儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- 修改pfile引數檔案過程的異常
- oracle儲存過程procedure_輸入引數varchar2與char報錯Oracle儲存過程
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- 儲存過程、觸發器與事務之間的關係儲存過程觸發器
- 【ASP.NET開發】ADO.NET呼叫帶輸出引數的儲存過程ASP.NET儲存過程
- 專案干係人管理各過程的輸入輸出關係
- 批量插入資料的儲存過程儲存過程
- 動態呼叫帶引數的儲存過程儲存過程
- 專案風險管理各過程的輸入輸出關係
- 專案整合管理各過程的輸入輸出關係
- 專案成本管理各過程的輸入輸出關係
- 專案質量管理各過程的輸入輸出關係
- 專案溝通管理各過程的輸入輸出關係