0

我正在尝试获取所有用户定义的存储过程的列表以填充组合框。这个想法是手动创建一个包含以下列的表:

SProc 名称、输入数量、参数 1、参数 2 ...

用户应该单击一个按钮,一个 SProc 从该表中选择所有这些数据,将其加载到一个数组中并填充组合框。

然后,用户应从组合框中选择一个存储的过程名称,并显示所需的参数数量(带有相关名称)。

4

1 回答 1

1

根据我们在 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# 应用程序中获得整个表格后,您可以根据您想要的任何标准进行分组/排序/限制。如果您想确保从上述查询中只返回特定的存储过程,只需使用您可以搜索的某种键向存储过程添加顶级注释。

祝你好运。

于 2012-05-17T17:29:07.703 回答