oracle用ifsqlcode0來判斷sql語句是否成功

2021-07-08 21:08:22 字數 2990 閱讀 9272

1樓:匿名使用者

返回執行的上一個 transact-sql 語句的錯誤號。

transact-sql 語法約定

語法@@error

返回型別

integer

備註如果前一個 transact-sql 語句執行沒有錯誤,則返回 0。

如果前一個語句遇到錯誤,則返回錯誤號。如果錯誤是 sys.messages 目錄檢視中的錯誤之一,則 @@error 將包含 sys.

messages.message_id 列中表示該錯誤的值。可以在 sys.

messages 中檢視與 @@error 錯誤號相關的文字資訊。

由於 @@error 在每一條語句執行後被清除並且重置,因此應在語句驗證後立即檢視它,或將其儲存到一個區域性變數中以備以後檢視。

使用 try...catch 構造來處理錯誤。try...

catch 構造也支援其他返回的錯誤資訊多於 @@error 的系統函式(error_line、error_message、error_procedure、error_severity 和 error_state)。try...catch 也支援 error_number 函式,但不限制該函式在語句產生錯誤後立即在語句中返回錯誤號。

有關詳細資訊,請參閱 try...catch (transact-sql)。

示例a. 用 @@error 檢測一個特定錯誤

以下示例用 @@error 在 update 語句中檢測約束檢查衝突(錯誤 #547)。

複製**

use adventureworks;

goupdate humanresources.employeepayhistory

set payfrequency = 4

where employeeid = 1;

if @@error = 547

print n'a check constraint violation occurred.';

gob. 用 @@error 有條件地退出一個過程

在此示例中,if...else 語句在儲存過程中的 insert 語句後檢測 @@error。@@error 變數的值將決定傳送給呼叫程式的返回**,以指示此過程的成功與失敗。

複製**

use adventureworks;

go-- drop the procedure if it already exists.

if object_id(n'humanresources.usp_deletecandidate', n'p') is not null

drop procedure humanresources.usp_deletecandidate;

go-- create the procedure.

create procedure humanresources.usp_deletecandidate

(@candidateid int)as

-- execute the delete statement.

delete from humanresources.jobcandidate

where jobcandidateid = @candidateid;

-- test the error value.

if @@error <> 0

begin

-- return 99 to the calling program to indicate failure.

print n'an error occurred deleting the candidate information.';

return 99;

endelse

begin

-- return 0 to the calling program to indicate success.

print n'the job candidate has been deleted.';

return 0;

end;

goc. 與 @@rowcount 一同使用 @@error

下面的示例用 @@error 和 @@rowcount 驗證一條 update 語句的操作。為任何可能出現的錯誤而檢驗 @@error 的值,而用 @@rowcount 保證更新已成功應用於表中的某行。

2樓:匿名使用者

儲存過程一般都用sqlstate來做判斷的。

if sqlstate = '00000' then success

sqlstate的含義比sqlcode要豐富得多,譬如找不到紀錄,或者遊標到達末尾,sqlstate = '02000'

在sqlserver的儲存過程中怎樣使用if-else if

3樓:匿名使用者

if a>b

begin

print 'a'

endelse if a

if-else語法為,最好不要把begin end省略掉。否則,儲存過程比較長可能會報語法錯誤

4樓:匿名使用者

直接用啊

create proc myproc @i intasif @i=1

select @i+10

else if @i=2

select @i+20

else

select 0

如何判斷sqlserver儲存過程是否正在執行

5樓:匿名使用者

select * from  master.dbo.sysprocesses

-- 列出 spid > 50 的.

對每個 spid 用 dbcc inputbuffer(spid) 看執行的文字, 如果搜尋完所有的 spid, 其執行的文字中都沒有包括你的儲存過程.

則基本上可判斷出儲存過程未執行.

6樓:匿名使用者

查 master.dbo.sysprocesses

oracle用sys和system預設密碼登入提示

使用者密碼錯誤,我們可以通過新建使用者的方法連線到oracle,下面給出方法。操作步驟 1 開啟sqlplus,以系統身份登入 使用者名稱為sys 密碼為manager as sysdba。指令 sys manager as sysdba 2 建立新使用者。語法 create user 使用者名稱 ...

ORACLE怎麼用SQL查詢多張表和多個時間點的資料的行數

你要加的check 2,check 3.是不同時間點check,和check1是一類的,所以不應該往右加列啊,直接往下加行就行了。而且建議 2列是不能完全標識出區別的,應該加一列,比如select 第一張表 a.first result,count 1 check 1 from c tpa r bs...

oracle查詢問題,oracle查詢問題

當半個地球外還有個你 當世界下著雨我在這裡 在人海中旅行哪管天氣 但我們那一天變成記憶 愛浪費一顆心多少力氣 天叫我要去看更多事情 在未來中流浪沒有目的 我只剩一滴淚捏在心裡 we re half a world away.讓我坐上漂浮地鐵走下去 也想著你 we are half a world a...