【问题标题】:SQL script how to add a tab or new line within scriptSQL脚本如何在脚本中添加选项卡或新行
【发布时间】:2010-06-30 15:05:07
【问题描述】:

我有一个获取表名并为这些表创建触发器的 SQL 脚本。当我在创建触发器后打开触发器时,所有代码都在一行上。我将如何在脚本中添加制表符和换行符以使触发器更具可读性。

示例代码:

SET @SQL = 'ALTER TRIGGER [dbo].[TRG_' + SUBSTRING(@TABLE_NAME,5, LEN(@TABLE_NAME)) + '_$AUD] '
        SET @SQL = @SQL + 'ON [dbo].[' + @TABLE_NAME + '] '
        SET @SQL = @SQL + 'FOR UPDATE, DELETE '
        SET @SQL = @SQL + 'AS '
        SET @SQL = @SQL + 'DECLARE '
        SET @SQL = @SQL + '@BIT INT, '
        SET @SQL = @SQL + '@FIELD INT, '
        SET @SQL = @SQL + '@CHAR INT '

【问题讨论】:

    标签: sql stored-procedures newline triggers tabs


    【解决方案1】:

    至少对于 MS SQL,您可以使用具有正确 ASCII 值的 CHAR() 并在字符串中的正确位置进行连接,或者您可以在 SQL 字符串本身中包含换行符、制表符等。字符串可以跨越多行。例如,这应该有效:

    SET @SQL = 'ALTER TRIGGER [dbo].[TRG_' + SUBSTRING(@TABLE_NAME,5, LEN(@TABLE_NAME)) + '_$AUD]
    ON [dbo].[' + @TABLE_NAME + ']
    ...
    
    '
    

    【讨论】:

      【解决方案2】:

      这不会改变实际的触发器定义,但您可以在需要处理时使用Instant SQL Formatter 之类的工具。

      【讨论】:

      • 我要保留该链接以方便其他情况使用,到目前为止,我有太多触发器需要更改。不过还是谢谢你,它确实很好用,刚刚试了一下
      【解决方案3】:

      使用这个

      SET @SQL = 'ALTER TRIGGER [dbo].[TRG_' + SUBSTRING(@TABLE_NAME,5, LEN(@TABLE_NAME)) + '_$AUD] 
              ON [dbo].[' + @TABLE_NAME + '] 
              FOR UPDATE, DELETE 
              AS 
              DECLARE 
              @BIT INT, 
              @FIELD INT, 
              @CHAR INT '
      

      【讨论】:

        猜你喜欢
        • 2012-07-20
        • 2013-06-18
        • 2011-10-29
        • 2021-04-27
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 2013-06-01
        • 1970-01-01
        相关资源
        最近更新 更多