2014-04-23 41 views
1
drop procedure getTitle 

create procedure getTitle @title_id VARCHAR(9) 
as 

declare @error int, 
@title varchar(100) 

begin 

insert into tab1 (CODE) VALUES (1) jhghjghj --- the jhghjghj places to cause an error 

SELECT @title = description from master..sysmessages where error = @@error 
update ex_employee set info = @title 
commit 
print "%1!", @title 
end 
go 

如果我嘗試編譯這個程序,它會給我這個錯誤如何獲取錯誤消息並將其保存在sybase中的表中?

Incorrect syntax near 'jhghjghj'. 

我要的是這個消息Incorrect syntax near 'jhghjghj'.保存到一個表。 我試圖用某種方式來捕捉它。那可能嗎 ?

+0

你看過'raiserror'&'sp_addmessage'來定義你自己的錯誤嗎?另外,我可能會看到這個錯誤,但是您是否試圖在實際發生之前捕獲錯誤?因爲插入是與select相同的事務的一部分,所以在語句結束之前錯誤還沒有發生? –

+0

@MichaelGardner出現錯誤時,我想捕獲它並將其插入臨時表中。我不想有我自己的錯誤。我想要執行查詢時發生的錯誤。 – Moudiz

回答

2

這是解決方案。這有點棘手。使查詢動態化,以便Syabse在編譯時不會抱怨語法錯誤。你編譯會很好,你會得到你想要的結果在運行時間。

create procedure getTitle @title_id VARCHAR(9) 
as 

declare @error int, 
@title varchar(100) 

begin 

declare @my_query varchar(500) 
select @my_query = "insert into tab1 (CODE) VALUES (1) jhghjghj" 
exec (@my_query) 

SELECT @title = description from master..sysmessages where error = @@error 
update ex_employee set info = @title 
commit 
print "%1!", @title 
end 
go 
+0

我有一個很長的過程,我不能分配數據類型文本@mrinal – Moudiz

相關問題