declare @a nvarchar
set @a='A0502'
select convert(int,@a)我想针对以上的结果分别进行处理,如果错误则进行一处理,
如果正确则进行二处理,要如何处理?

解决方案 »

  1.   

    @@ERROR
    返回最后执行的 Transact-SQL 语句的错误代码。语法
    @@ERROR返回类型
    integer注释
    当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。
      

  2.   

    我捕捉了@error,但还没到那条语句系统就提示
    服务器: 消息 245,级别 16,状态 1,行 21
    将 nvarchar 值 'A0502' 转换为数据类型为 int 的列时发生语法错误。
    我是查询分析器中执行,建成存储过程执行结果也一样。
      

  3.   

    源代码如下:
    declare @CodeType int                   --编码的类型
    declare @Code nvarchar(100) --传的编码 
    declare @CodeLen int     --传入的编码长度
    declare @CodingRule varchar(20)        --编码的规则
    declare @TableName Nvarchar(100)        --对应的表名
    declare @CharFlag int                   --字符?数字?set @CodeType=4
    set @Code='A0502'
    set @CodeLen=len(rtrim(ltrim(@Code)))select @TableName=KeyWord,@CodingRule=CodingRule,@CharFlag=CharFlag 
    from p_gradeDef 
    where iSerial=@CodeTypeif(@CharFlag=0)
    begin
    select convert(int,@Code)
    if(@@error<>0)
    begin
    print '只允许数字'
    end 
    else 
    begin
    print '符合要求'
    end
    end