我有这个疑问:当数据存储在表的一行时,如何返回“剩余行”?
SELECT definition
FROM sys.sql_modules
WHERE definition like '@noreturns'
这列出了所有包含字符串对象的 - 但是,我需要返回的对象行的其余部分(例如,该行的其余部分在SP在其定义中包含该字符串) 但是,这是一个表,那么我将如何返回该行的其余部分而不是整行(在这种情况下表示定义的REST)? 谢谢
我有这个疑问:当数据存储在表的一行时,如何返回“剩余行”?
SELECT definition
FROM sys.sql_modules
WHERE definition like '@noreturns'
这列出了所有包含字符串对象的 - 但是,我需要返回的对象行的其余部分(例如,该行的其余部分在SP在其定义中包含该字符串) 但是,这是一个表,那么我将如何返回该行的其余部分而不是整行(在这种情况下表示定义的REST)? 谢谢
您可以使用sys.syscomments
表。
select OBJECT_NAME(id),
text AllText,
SUBSTRING(text, CHARINDEX('MESAJ_LINK',text), CHARINDEX(CHAR(13),text,CHARINDEX('MESAJ_LINK',text)+1)) RestOfTheText
from
sys.syscomments
where text like '%@noreturns%'
'sys.syscomments'在一行中获取整个对象,我认为OP需要一个分隔符行,所以'sp_helptext'是正确的方法,正如我在答案中所解释的。 –
@ahmedabdelqader如果程序写得很好格式化你会是对的。我的意思是在同一行写你的虚拟程序并测试它。而且你不会对程序进行任何搜索。您必须知道过程名称。 –
实际上这不起作用 – LearnByReading
将出从sp_helptext
到临时表中的下一个步骤: -
insert into #tableName
exec sp_helptext 'Object_Name'
演示: -
Create procedure usp_DummyProc
@param1 int,
@param2 int
as
Begin
select @param1 + @param2 as Result
print 'This is dummy porcedure'
End
go
Create table #temp (Line varchar(2000))
insert into #temp
exec sp_helptext 'usp_DummyProc'
/* The Target is selecting the line that contains `print` word,
so simply use the simple `select` with `where` */
select * from #temp
where Line like '%Print%'
结果: -
print 'This is dummy porcedure'
如果程序写得很好格式化你会是对的。我的意思是在同一行写你的虚拟程序并测试它。而且你不会对程序进行任何搜索。你必须知道程序的确切名称。 –
对于考试(@noreturns)+ 29 + LTRIM(@Bay)+ @RTRIM(@Join)“ – LearnByReading