我想知道在temporary
中使用了多少stored procedure
个表。
提前致谢
答案 0 :(得分:1)
这是一个让你可以使用的算法:
Information_Schema.Routines
中存储过程的文本
醇>
Declare @Def VarChar(Max) = ''
Select @Def = @Def + Routine_Definition
From Information_Schema.Routines
阅读这个很棒的答案:
Turning a Comma Separated string into individual rows
事后1:
现在,如果您有[#One Two Three]
和[#One Two Three Four]
,它将仅显示为#One
,因此您必须使用一些TSQL技巧来删除方括号之间的空格。
事后2:
您是否必须区分#Temp
和##Temp
表?
答案 1 :(得分:0)
我真的不明白你为什么要这样做,但以下查询可能有所帮助。
这只计算出现在存储过程定义中的哈希数,该存储过程存储在系统视图'sys.sql_modules'中。
SELECT
LEN(m.[definition]) -
LEN(REPLACE(m.[definition],'#','')) AS 'CountOf#Characters'
FROM
sys.sql_modules m
JOIN sys.procedures p
ON m.[object_id] = p.[object_id]
WHERE
p.[name] = 'Testing' -- <<the name of your stored procedure
当然,这假定该过程仅包含CREATE TABLE#Table1样式语句。如果使用哈希删除表或甚至在代码注释中使用哈希,则需要考虑包装替换函数。