2009-11-13 64 views

回答

11

你可以尝试这样的事情

DECLARE @Table TABLE(
     Val VARCHAR(MAX) 
) 

INSERT INTO @Table EXEC sp_helptext 'sp_configure' 

DECLARE @Val VARCHAR(MAX) 

SELECT @Val = COALESCE(@Val + ' ' + Val, Val) 
FROM @Table 

SELECT @Val 

这将带回一切都在一个行,所以你可能需要使用换行符代替。

+0

完美!工作很好。 – 2009-11-13 06:16:38

+0

@gbn答案在我看来是更清洁的,尽管他们都做这项工作。 – Treborbob 2014-02-28 16:59:50

4

假设SQL Server 2005和以上(这是由VARCHAR(最大值)的astander的回答暗示的),为什么不直接使用这些

SELECT OBJECT_DEFINITION('MyObject') 

SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID('MyObject') 
+0

从SQSH中使用此功能会给我:仅使用Unicode的归类或ntext数据中的Unicode数据无法发送到使用DB-Library(如ISQL)或ODBC版本3.7或更低版​​本的客户端。 – 2016-11-11 17:36:54

2

这并不十分吸引人,但它的工作原理...

DECLARE @Table TABLE(
     Val VARCHAR(MAX) 
) 

INSERT INTO @Table EXEC sp_helptext 'sp_configure' 

DECLARE @Val VARCHAR(MAX) 

SET @Val = '' 

SELECT @Val = @Val + REPLACE(REPLACE(REPLACE(Val, CHAR(10), ''), CHAR(13), ''), CHAR(9), '') 
FROM @Table 

-- Replaces line breaks and tab keystrokes. 

SELECT @Val 
相关问题