sql >> データベース >  >> RDS >> Sqlserver

TRY CATCH 内の 1 つのステートメントから複数のエラー メッセージを取得する

    ニーズと、このスクリプトを実行しているアカウントの権限によっては、DBCC OUTPUTBUFFER(@@spid) を使用できる場合があります。 .

    Erland Sommarskog の エラー処理に関する記事 を読んでいるときに、この考えに出会いました。 .彼は手順 spGET_ErrorMessage にリンクしています。 .

    残念ながら、これはまったくではありませんでした ただし、SQL Server 2008 のテスト スクリプトで動作するため、バッファ形式が変更されたかどうかはわかりませんが、少し調整することで変更される可能性があります!

    CREATE TABLE #foo
    (
    c INT DEFAULT(0)
    )
    ALTER TABLE #foo ALTER COLUMN c VARCHAR(10)
    
    GO
    EXEC spGET_LastErrorMessage
      

    実際のアウトプット

    Msg 5074, Level 16, State 1, Line 2
    The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.
    
        Msg 4922, Level 16, State 9, Line 2
        ALTER TABLE ALTER COLUMN c failed because one or more objects access this column.
      

    要求された出力

    errNumber            errState    errLevel    errMessage                                                                               errInstance                                                                                                                     errProcedure    errLine
    -------------------- ----------- ----------- ---------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------- --------------- -----------
    5074                 1           16          The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.                  MARTINHP                                                                                                                        NULL            2
    4922                 9           16          The object 'DF__#foo___________c__6DCC4D03' is dependent on column 'c'.ALTER TABL        MARTINHP 䄀䰀吀䔀刀 䌀伀䰀唀䴀一 挀 昀愀椀氀攀搀 戀攀挀愀甀猀攀 漀渀攀 漀爀 洀漀爀攀 漀戀樀攀挀琀猀 愀挀挀攀猀猀 琀栀椀         NULL            117
      

    1. データベース内のデータベース(テーブルデザイン)

    2. InstallAllOracleASPNETProvidersが正しく機能しない

    3. php / mysqlの検索にタイプミス修正を実装するための最良の方法は何ですか?

    4. OraclesqlQueryのJoinで削除