程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> SybaseIQ存儲過程異常處理

SybaseIQ存儲過程異常處理

編輯:SyBase教程

Sybase IQ數據庫中,有兩種異常信息,一種是警告warning、一種是錯誤error。
在存儲過程中,對這兩種異常信息做了不同的處理
1)在發生告警信息的時候,IQ會繼續執行。
2)在發生error時,IQ提供了兩種處理方式:

第一種是默認方式,在默認方式下,數據庫會將錯誤發生的SQLSTATE、SQLCODE返回到調用存儲過程的環境中,比如說你調用存儲過程所使用的客戶端

第二種是在創建SP的時候,可以指定,ON EXCEPTION RESUME 子句。如下:
CREATE PROCEDURE dba.sp_name()
ON EXCEPTION RESUME

使用ON EXCEPTION RESUME子句,過程會根據 ON_TSQL_ERROR 選項的設置采取不同的操作。如果 ON_TSQL_ERROR 設置為CONDITIONAL (缺省設置),則當下一條語句處理錯誤時,將繼續執行下面的語句;否則將退出。

我寫了一個簡單的過程來測試的:
Java代碼 
CREATE PROCEDURE "DBA"."OuterProc"() ON EXCEPTION RESUME 
BEGIN 
   declare command_test exception for SQLSTATE '52003'; 
   MESSAGE 'Hello from OuterProc.' TO CLIENT; 
   signal command_test;  --模擬錯誤消息   
   if  SQLSTATE=52003 then MESSAGE 'Hello from OuterProc.' TO CLIENT  
   end if; 
END 


Java代碼 
CALL OuterProc(); 


結果輸出為:
Java代碼 
Hello from OuterProc. 
Hello from OuterProc. 


若將if 處理語句去掉,則會顯示出錯。

在IQ中,處理語句還包括:
• IF
• SELECT @variable =
• CASE
• LOOP
• LEAVE
• CONTINUE
• CALL
• EXECUTE
• SIGNAL
• RESIGNAL
• DECLARE
• SET VARIABLE

作者“yangyoupeng-cn-fujitsu-com”
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved