我正在尝试获取所有用户定义的存储过程的列表以填充组合框。这个想法是手动创建一个包含以下列的表:
SProc 名称、输入数量、参数 1、参数 2 ...
用户应该单击一个按钮,一个 SProc 从该表中选择所有这些数据,将其加载到一个数组中并填充组合框。
然后,用户应从组合框中选择一个存储的过程名称,并显示所需的参数数量(带有相关名称)。
我正在尝试获取所有用户定义的存储过程的列表以填充组合框。这个想法是手动创建一个包含以下列的表:
SProc 名称、输入数量、参数 1、参数 2 ...
用户应该单击一个按钮,一个 SProc 从该表中选择所有这些数据,将其加载到一个数组中并填充组合框。
然后,用户应从组合框中选择一个存储的过程名称,并显示所需的参数数量(带有相关名称)。
根据我们在 SO chat 中的讨论:
SELECT
sprocs.ROUTINE_NAME,
parms.PARAMETER_NAME,
parms.DATA_TYPE
FROM
INFORMATION_SCHEMA.ROUTINES sprocs
LEFT OUTER JOIN INFORMATION_SCHEMA.PARAMETERS parms ON parms.SPECIFIC_NAME = sprocs.ROUTINE_NAME
WHERE
sprocs.ROUTINE_TYPE = 'PROCEDURE'
--AND PATINDEX('/*<SomeKeyToSearch>*/', sprocs.ROUTINE_DEFINITION) > 0
这将为您提供所有存储过程及其参数和数据类型的列表。请注意,您还需要密切注意数据类型(精度、比例、最大长度等),因为这将用于允许用户调用任意存储过程。在 C# 应用程序中获得整个表格后,您可以根据您想要的任何标准进行分组/排序/限制。如果您想确保从上述查询中只返回特定的存储过程,只需使用您可以搜索的某种键向存储过程添加顶级注释。
祝你好运。