【发布时间】:2015-03-07 12:05:31
【问题描述】:
当我打印 @v_sql 参数时,我得到 4000 个字符。
我该如何解决这个问题?
来源:
BEGIN
SET NOCOUNT ON;
DECLARE @v_sql nvarchar(max)
SELECT @v_sql = N'';
IF UPPER(@action)='DISABLE'
BEGIN
SELECT @v_sql = @v_sql + 'ALTER INDEX '+ QUOTENAME(name,'[')+' ON ' + quotename( OBJECT_SCHEMA_NAME(object_id),'[') +'.'+ quotename( OBJECT_NAME(object_id),'[') + ' DISABLE;'+char(10)
FROM sys.indexes
WHERE OBJECTPROPERTY([object_id], 'IsMsShipped') = 0 AND type =2;
END
IF UPPER(@action)='REBUILD'
BEGIN
SELECT @v_sql = @v_sql + 'ALTER INDEX '+QUOTENAME(name,'[')+' ON ' + quotename( OBJECT_SCHEMA_NAME(object_id),'[') +'.'+ quotename( OBJECT_NAME(object_id),'[') + ' REBUILD WITH(SORT_IN_TEMPDB=ON);'+char(10)
FROM sys.indexes
WHERE OBJECTPROPERTY([object_id], 'IsMsShipped') = 0 AND type =2;
END
IF @v_sql <> ''
BEGIN
print @v_sql
--EXEC sp_executesql @v_sql;
END
END
【问题讨论】:
-
所以我应该用 select 替换 print 并且可能在 char(10) 之后添加一个 char(13)?
-
我看到的使用 XML 的选项之一(可能不是为了您的查询,但只是想分享):
select @SQL as [processing-instruction(x)] FOR XML PATH
标签: sql-server tsql sqldatatypes nvarchar