打印并执行格式化

时间:2019-02-15 01:31:46

标签: sql-server format

picture of query and printout

我已经编写了一个脚本,需要对其进行检查才能运行它(@printonly = 0)

我需要首先格式化脚本以提高可读性。我将语句包装到变量中,然后打印该变量。

我要保持查询部分整洁,还要使打印部分以理想的格式输出。

1)打印区域中的(第二个)UPDATE我想要一个空白的新行,然后显示UPDATE。 我可以将其内置到顶部的查询中吗?

2)由于查询区域中的格式干净,打印区域中的(第三个)UPDATE出现在选项卡中。如何在打印区域中取消选中该标签,同时在查询区域中保持良好的格式?

3)与1)相同,在(第四个)UPDATE之前需要一个新的空白行。

DECLARE @remoteinstance nvarchar(max)
DECLARE @exec nvarchar(max)
DECLARE @printonly bit
SET @printonly = 1

        --section 1
    SET @remoteinstance = '[linkedservername]'
    SET @exec = 'UPDATE r_st
                         SET.....
                         FROM.... AS st
                         INNER JOIN ' + @remoteinstance + '.. AS r_st
                         st... = r_st... AND st... <> r_st... '
    IF (@printonly = 1)  BEGIN PRINT @exec END
                    ELSE BEGIN EXEC (@exec) END

            SET @exec = 'UPDATE ' + @remoteinstance + '...
            SET xx = xy

            UPDATE ' + @remoteinstance + '....
            SET xz = xa
            WHERE ..... '

    IF (@printonly = 1)  BEGIN PRINT @exec END
                ELSE BEGIN EXEC (@exec) END

--section 2 - 
       SET @remoteinstance = '[next linkedservername]'
       SET @exec = ' {same as above}....

1 个答案:

答案 0 :(得分:0)

使用CHAR(9)控制制表符,使用CHAR(13)进行换行。

declare @x varchar(100) = 'A';
set @x = @x + CHAR(13) + 'B';
set @x = @x + CHAR(9) + 'C';
print @x;

结果:

A
B   C

如果要替换空格或制表符,请使用REPLACE

print REPLACE(@x, CHAR(9), '!')

结果:

A
B!C