当前位置: 首页 > 面试题库 >

在SQL Server中获取存储过程的文本

邰博远
2023-03-14
问题内容

我正在尝试将旧的存储过程保存到字符串中。当我使用以下内容时,我不会出现任何换行符。

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

问题答案:

我最近遇到了一个相同的问题,并制作了一个快速而肮脏的脚本来获取视图的定义,但是同样的事情也可以用于存储过程和函数。

DECLARE @Lines TABLE (Line NVARCHAR(MAX)) ;
DECLARE @FullText NVARCHAR(MAX) = '' ;

INSERT @Lines EXEC sp_helptext 'sp_ProcedureName' ;
SELECT @FullText = @FullText + Line FROM @Lines ;

PRINT @FullText ;

它只是sp_helptext按照您的建议使用,在表变量中获取其输出,并将所有结果行连接到文本变量中。它还使用以下事实:sp_helptext结果集中的每一行都包含尾随换行符,因此无需在此处添加它。

从那里开始,您只需像平常一样使用变量,即可将其打印,保存到某个表或对其进行一些操作。我的特殊用例是构建一个辅助存储过程,以删除视图并在修改其基础表时重新创建它。



 类似资料:
  • 问题内容: 我有一张桌子,我需要在99%的时间内自动分配ID(其他1%似乎使用身份列来排除)。因此,我有一个存储过程来获取以下行中的下一个ID: `` 检查必须检查用户是否手动使用了ID并找到下一个未使用的ID。 当我依次调用它并返回1、2、3时,它可以正常工作。我需要做的是在多个进程同时调用此方法的情况下提供一些锁定。理想情况下,我只需要它专用于围绕此代码锁定last_auto_id表,以便第二

  • 本文向大家介绍sqlserver中存储过程的递归调用示例,包括了sqlserver中存储过程的递归调用示例的使用技巧和注意事项,需要的朋友参考一下 递归式指代码片段调用自身的情况;危险之处在于:如果调用了自身一次,那么如何防止他反复地调用自身。也就是说提供递归检验来保证适当的时候可以跳出。 以阶层为例子说存储过程中递归的调用。 递归 当创建此存储过程时候,会遇见一条报告信息

  • 问题内容: 我使用的是SQL Server2005。我创建了一个大多数时候都可以使用的存储过程,但是我发现了一个实例,它无法满足我的要求。 目前,代码执行的操作是这样的 输出变量在哪里。 因此,我可以得到一个数字,但我真正想要的只是SQL错误。 像 Hey之类的 东西 ,我不能这样做,因为在此列上有fk约束 或其他 约束 。我在msdn http://msdn.microsoft.com/zh-

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。

  • 本文向大家介绍Python中执行存储过程及获取存储过程返回值的方法,包括了Python中执行存储过程及获取存储过程返回值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: 1. 使用adodbapi 2. 使用pymssq