请问假设表TEMP不存在,然后如下
DECLARE @NB_ERROR_STRING VARCHAR(255)
INSERT INTO TEMP VALUES(1)
IF @ERROR<>0
SET  @NB_ERROR_STRING='TEMP表不存在'
现在碰到的问题就是mssql一碰到错误就直接终止运行了,不会执行IF @ERROR<>0以下的语句,请问有什么方法可以将错误信息赋值给@NB_ERROR_STRING,谢谢。

解决方案 »

  1.   

    严重的错误SQL是直接终止而不会进行处理,对象不存在就属于严重错误,还有那些严重错误就要自己去发现。同理那些是简单的错误也要自己找找:如除零错误就可以处理拉:declare @r varchar(200)
    PRINT 1/0
    select @r = @@ERROR 
    print 'Error message:'+@r服务器: 消息 8134,级别 16,状态 1,行 2
    遇到被零除错误。
    Error message:8134
    还有就是编写SQL的时候注意一下可以人为处理的错误不要丢给机器去处理,如对象不存在,处理如下:
    DECLARE @NB_ERROR_STRING VARCHAR(255)
    IF NOT EXISTS(SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID('TEMP'))
    BEGIN
    SET @NB_ERROR_STRING='TEMP表不存在'
    END
    ELSE
    BEGIN
    INSERT INTO TEMP VALUES(1)
    ENDIF @NB_ERROR_STRING IS NOT NULL
    PRINT @NB_ERROR_STRING