SQL Server 預存程序中的表變數名加上’[]‘後出現執行錯誤

來源:互聯網
上載者:User

之前工作中編寫預存程序(SQL Server 2005),聲明了一個表變數,在SELECT ...FROM 表變數名 的時候,按斷行符號外掛程式SQL Prompt 4自動給表變數名加上了[]括弧,當時沒覺察有什麼問題,按F5 ALTER 預存程序沒提示編譯錯誤。在執行該預存程序的時候卻出現錯誤:

 

訊息 208,層級 16,狀態 1,過程 test2,第 9 行
對象名  '@TEMP_ID' 無效。

 測試的預存程序如下:

代碼SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[test2]
AS 
    DECLARE @TEMP_ID TABLE
        (
          [ID] [VARCHAR](18) NOT NULL
                             PRIMARY KEY
        )

    BEGIN TRY
        SELECT  *
        FROM    [@TEMP_ID]
    END TRY
    BEGIN CATCH
        PRINT '出錯了'
    END CATCH

奇怪的是,在CREATE或者ALTER這個預存程序的時候,SQL Server 沒有報錯。出現錯誤,是在執行這個預存程序的時候,而且,這個錯誤不能被TRY...CATCH塊捕獲到。究竟是什麼原理,不知道院子裡的牛人能否解釋下?

所以,建立、修改完預存程序,還是試試執行下看有沒錯誤。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.