T-SQl中的REPLICATE命令复制给定的字符串任意次。字符串可以是一个字符或者多个。可以将该命令加入到脚本中得到更好的输出。以下命令可以输出一行星号:
PRINT REPLICATE('*',80)
字符串会按照定宽字符输出排列,比如Courier字体,下面的例子显示SQL SERVRE实例名的长度,没有什么实际的意义,致使说明它增加了T-SQL的可读性。
PRINT REPLICATE(' |',10)
PRINT REPLICATE('1234567890',10)
PRINT @@SERVICENAME
以下是一个样例的脚本显示该脚本每一步的具体运行结果:
SET NOCOUNT ON
GO
PRINT REPLICATE('#',20) + 'CREATING MyUser Schema' +
REPLICATE('#',20)
GO
PRINT REPLICATE('*',20) + ' ADDING LOGINS...'
GO
EXEC sp_addloginMyUser, NULL
GO
PRINT REPLICATE('*',20) + ' ADDING USERS...'
GO
EXEC sp_adduserMyUser
GO
PRINT REPLICATE('*',20) + ' ADDING ROLE MEMEBERS...'
GO
EXEC sp_addrolememberdb_ddladmin, MyUser
GO
PRINT REPLICATE('*',20) + ' CREATING TABLES...'
GO
CREATE TABLE MyUser.x_temp
(KEY1 INT IDENTITY NOT NULL
CONSTRAINT pk_x_temp PRIMARY KEY,
COL1 INT NULL)
GO
SELECT type, name MyUserTables
FROM sysobjects
WHERE USER_NAME(uid) = 'MyUser'
GO
PRINT REPLICATE('#',20) + ' DROPPING MyUser Schema '
+ REPLICATE('#',20)
GO
PRINT REPLICATE('*',20) + ' DROPPING TABLES...'
GO
DROP TABLE MyUser.x_temp
GO
SELECT type, name MyUserTables
FROM sysobjects
WHERE USER_NAME(uid) = 'MyUser'
GO
PRINT REPLICATE('*',20) + ' DROPPING ROLE MEMEBERS...'
GO
EXEC sp_droprolememberdb_ddladmin, MyUser
GO
PRINT REPLICATE('*',20) + ' DROPPING USERS...'
GO
EXEC sp_dropuserMyUser
GO
PRINT REPLICATE('*',20) + ' DROPPING LOGINS...'
GO
EXEC sp_droploginMyUser
GO
在脚本中加入这些注释,可以很容易的对脚本进行差错,当脚本发生错误的时候可以很容易的确定在那里出现了问题。