如何在数据库中查询任何返回特定名称的字段/列值的存储过程



我想在数据库的元数据中查询任何从名为"bidprice"的字段或列返回值的存储过程

我在这里得到了一个很好的答案,关于如何搜索需要一组特定参数的存储过程,即具有名为Unit、Member、BegDate和EndDate的参数的存储程序,这是:

; WITH T AS (SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@Unit'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@Member'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@BegDate'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@EndDate')
SELECT [specific_name] 
FROM T
GROUP BY [specific_name] HAVING COUNT(*) = 4

这非常有效;因此,我希望,也许我需要找到返回特定名称的字段/列值的存储过程,比如"bidprice",可能就是这样简单的东西:

; SELECT [specific_name] FROM information_schema.COLUMNS WHERE [COL_NAME] = "bidprice"
FROM T

但是在VisualStudio.Server资源管理器中尝试(右键单击数据库连接的Tables文件夹,然后选择NewQuery),我得到:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'FROM'.

[specific_name]适用于这种类型的查询吗?对于这种类型的查询,COLUMNS或[COL_NAME]是否错误?

我还尝试以这种方式简化查询:

; SELECT [specific_name] FROM information_schema.COLUMNS WHERE [COL_NAME] = "bidprice"

但得到:

Msg 207, Level 16, State 1, Line 1
Invalid column name 'COL_NAME'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'bidprice'.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'specific_name'.

(以及删除前置的";"时出现的相同错误)

搜索存储过程的正确方法是什么?存储过程在其结果集中(在其他字段中)返回一个名为"bidprice"的字段/列?

您可以使用sp_describe_first_result_set,它从tsql批处理返回元数据。看看https://msdn.microsoft.com/en-us/library/ff878602%28v=sql.110%29.aspx

最新更新