【发布时间】:2015-05-15 19:01:55
【问题描述】:
我正在尝试将旧的存储过程保存到字符串中。当我使用以下内容时,我没有得到任何换行符。
SELECT @OldProcedure = Object_definition(object_id)
FROM sys.procedures
WHERE name = @ProcedureName
关于如何获取带有换行符的存储过程文本有什么建议吗?
我正在考虑使用sp_helptext
谢谢
更新
我正在复制并粘贴结果中的结果,这将显示一行。
至于脚本,因为我将结果存储在 db 字段中。我正在创建一个可以动态生成程序的工具,但我想创建它们的历史。
更新
原来 Object_definition 做了我想要的,但由于某种原因,当我从结果中复制它时,我得到了一行。
Declare @sql varchar(max) ;
SELECT @sql=Object_definition(object_id)
FROM sys.procedures
WHERE name = 'Test_QueryBuilder';
drop procedure Test_QueryBuilder
exec( @sql)
print @sql
【问题讨论】:
-
你怎么知道没有换行符?您是否在 SSMS 中查看此内容?如果是这样,您只需将输出设置为文本而不是网格,它将显示格式化文本。
-
为什么不在 SQL Server Management Studio 和“脚本到”文件或查询窗口中查看它们?
-
sp_helptext 确实是要走的路。您将获得您的过程的确切定义,因为它已经/将在服务器上编译。
-
这听起来像是一个 XY 问题。如果您想对数据库对象进行版本控制,有更好的方法。 meta.stackexchange.com/questions/66377/what-is-the-xy-problem
-
@Anon。它可能。基本上我构建了一些东西来生成一个存储过程。我想保留它生成的所有程序的历史。让我知道这是否属于 XY 问题。
标签: sql sql-server stored-procedures