我有這個疑問:當數據存儲在表的一行時,如何返回「剩餘行」?
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