0

こんにちは、私は SQL SERVER 2008 R2 データ センター エディションを使用しています。このストアド プロシージャでは、raiserror を使用してカスタム エラー メッセージを表示しています。SQLサーバーのデフォルトのエラーメッセージも取得する方法はありますか. ストア プロシージャのコードは次のとおりです。

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
4

1 に答える 1

0

try catch を使用できます。エラーが発生すると、バッチは catch に移動し、@@error_message を使用してエラー メッセージを表示します。

于 2013-10-11T23:00:33.900 に答える