0
嗨,我正在使用SQL SERVER 2008 R2數據中心版本,我有這個存儲過程,我在使用raiserror引發自定義錯誤消息。有沒有辦法也可以得到sql server的defualt錯誤信息。存儲過程的代碼如下。如何獲得DEFAULT ERROR消息以及自定義RAISERROR消息
CREATE Procedure usp_SomeName
@StableName nvarchar(50) = NULL,
@StableID INT = NULL OUTPUT,
@StableDescription ntext = NULL,
@Picture image = NULL,
@ReturnCode int = NULL OUTPUT,
@ReturnMessage nvarchar(100) = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
IF @StableName IS NULL
RAISERROR('Validation Failed: Stable name cannot be null', 16,1)
IF EXISTS (SELECT StableName from dem.TableName
WHERE StableName = @StableName)
RAISERROR('Validation Failed: Stable Name already Exists',16,1)
BEGIN TRANSACTION
INSERT INTO TableName(StableName, [Description], Picture)
VALUES (@StableName, @StableDescription, @Picture)
COMMIT TRANSACTION
SELECT @ReturnCode = 0 , @ReturnMessage = 'Sucess! New Stable Details has added.'
SELECT @StableID = SCOPE_IDENTITY()
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRAN
SELECT @ReturnCode = ERROR_NUMBER(), @ReturnMessage = ERROR_MESSAGE()
SELECT @ReturnCode AS ReturnCode, @ReturnMessage AS ReturnMessage,
ERROR_LINE() AS ErrorLine,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState
END CATCH
SET NOCOUNT OFF;
END
GO
在SQL Server 2012中,您將能夠使用THROW()。在此之前,我認爲你的運氣不好...... –
謝謝你的回覆亞倫。自從您提到sql2012之後還有一個問題,我的公司正在討論是否要升級到SQL 2012,因爲「我的老闆」已經聽說了太多關於sql 2012問題的故事,您認爲他是對的還是他是隻是想保存一些便士? :) –
新版本總會有恐懼和偏執。 SQL Server 2012引入了更多的限制性許可,這可能會推動某些客戶的成本上漲,但只要安裝SP1和CU6,就不應該有任何技術問題。 –