declare @aa int
select @aab错误信息:
Msg 137, Level 15, State 2, Line 3
Must declare the scalar variable "@aab".像这种错误在解析的时候就出错的错误我怎么能够把错误捕捉出来呀。
如果是运行过程中出现的错误我可以通过下面的捕捉:
BEGIN TRY 
declare @aa int,@errorline int,@errorMessage varchar(max)
select @aa
END TRY
BEGIN CATCH
select @errorline=ERROR_LINE(),@errorMessage = ERROR_MESSAGE() ;
select @errorline,@errorMessage
END CATCH
但这种根本就没运行,解析就出错了怎么捕捉。SQL错误捕捉解析出错

解决方案 »

  1.   

    ERROR_MESSAGE()返回导致 TRY…CATCH 构造的 CATCH 块运行的错误的消息文本。
    而Must declare the scalar variable "@aab".在编译的时候都无法通过的啊。 当 Sql Server 收到任何一个指令,包括:查询、批处理、存储过程、触发器、预编译指令和动态SQL Server语句,要完成语法解析、语义分析,然后再进行"编译",生成能够运行的"执行计划"。
      

  2.   

    你把你的T-SQL包在ADO.NET里,然后用C#中的TRY,CATCH捕获就可以了啊
      

  3.   

    你可以看看我写的博客,http://blog.csdn.net/jack11430/article/details/9105403
    你就明白由程序发送的T-SQL的语句的执行过程,具体的T-SQL编译的过程需要看《SQLSERVER 2005内幕T-SQL》这本书。
      

  4.   

    SQL语法都不通过,SQL语句中的try catch根本没有用,这个语法问题需要在程序中抓取