我想遍历几个存储的过程,并从每个过程中提取一个字符串以用于另一个过程(基本上是4部分的远程服务器字符串)
因此,我可以将存储的procs列表从SysObjects
(类型= P)放入一个表中,然后在每个表上调用sp_helptext
的表变量中循环或游标。
但是,如何将sp_helptext
的文本结果转换为变量,以便可以对单词“ BOCTEST ”等进行CharIndex操作?
是否存在像sys.procedures这样的表来存储文本。
最佳答案
可移植的方法是使用ANSI/ISO View INFORMATION_SCHEMA.ROUTINES
,但是您只会得到存储过程定义的前4000个字符:
declare @source_code varchar(max)
select @source_code = t.ROUTINE_DEFINITION
from information_schema.routines t
where specific_schema = 'owner-schema' -- e.g., dbo
and specific_name = 'my_stored_procedure_name' -- your stored procedure name here
或者,您可以按照相同的方式使用系统 View
sys.sql_modules
:declare @source_code varchar(max)
select @source_code = definition
from sys.sql_modules
where object_id = object_id('dbo.my_stored_procedure_name')
或者,最简单的方法:
declare @source_code varchar(max)
set @source_code = object_definition( 'dbo.my_stored_procedure_name' )
关于sql - 将存储过程的文本获取到SQL Server中的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708681/