2010-06-30 104 views
1

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

回答

1

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

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

' 
+0

这工作很好。问题回答了 – mattgcon 2010-06-30 15:12:12

0

这不会改变实际触发定义,但你可以使用一个工具,如Instant SQL Formatter,当你需要进行这项工作。

+0

我要去保持这种联系得心应手其他情况下,我有太多的触发器来改变,因为这一刻的。但是,谢谢你,它确实工作,只是试过它 – mattgcon 2010-06-30 15:09:06

0

使用本

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 '