• (4.61)sql server执行SQL遇到错误不中断


    转自:CSDN 问题贴:https://bbs.csdn.net/topics/399171379

    【1】问题

    execute sp_addextendedproperty 'MS_Description','XXXX','user','dbo','table','TB1',null,null;
    execute sp_addextendedproperty 'MS_Description','XXXX2','user','dbo','table','TB2',null,null;
    
    在SSMS中执行的时候如果第1个报错了,第2个不会执行被中断了
    
    只有这种才可以
    execute sp_addextendedproperty 'MS_Description','XXXX','user','dbo','table','TB1',null,null;
    GO
    execute sp_addextendedproperty 'MS_Description','XXXX2','user','dbo','table','TB2',null,null;
    
    但是我的语句都是SQL拼接出来的,没法出现换行的GO

    【2】解决,使用 begin try cache(或者使用存储过程)

    --1.
    BEGIN TRY
        execute sp_addextendedproperty 'MS_Description','XXXX','user','dbo','table','TB1',null,null;
    END TRY
    BEGIN CATCH
        SELECT ERROR_MESSAGE() AS ErrorMessage
    END CATCH
    --2.
    BEGIN TRY
        execute sp_addextendedproperty 'MS_Description','XXXX2','user','dbo','table','TB2',null,null;
    END TRY
    BEGIN CATCH
        SELECT ERROR_MESSAGE() AS ErrorMessage
    END CATCH

    【3】参考写法(+char(10)+'go'+char(10))

    DECLARE @sql VARCHAR(max)=''
    SELECT @sql=@sql+'execute sp_addextendedproperty ''MS_Description'',''XXXX'',''user'',''dbo'',''table'','''+name+''',null,null;'+CHAR(10)+'go'+CHAR(10)  FROM  sys.objects WHERE  type='U'
    PRINT @sql

    这样的结果,你可以复制出来用

    但不能直接 exec(@sql)

    否则会报错:

      

  • 相关阅读:
    Oracle 10g 体系结构及安全管理
    Oracle 10g数据库概述
    jQuery Ajax应用
    ASP.NET Ajax核心对象
    ASP.NET XML
    jQuery插件的使用和编写
    jQuery中的Ajax应用
    弹窗下面的页面滚动问题
    报文过长,华为手机自动拦截报文
    手机抓包 配置步骤
  • 原文地址:https://www.cnblogs.com/gered/p/14743699.html
Copyright © 2020-2023  润新知