SQL Server 存储过程中的表变量名加上'[]'后出现执行错误

之前工作中编写存储过程(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块捕获到。究竟是什么原理,不知道院子里的牛人能否解释下?

所以,创建、修改完存储过程,还是试试执行下看有没错误。

 

你可能感兴趣的:(SQL Server)