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...