检索 SQL 存储过程和函数的输入和输出参数?

Posted

技术标签:

【中文标题】检索 SQL 存储过程和函数的输入和输出参数?【英文标题】:Retrieve input and output parameters for SQL stored procs and functions? 【发布时间】:2010-04-22 21:18:32 【问题描述】:

对于给定的 SQL 存储过程或函数,我试图在我创建的 Winforms 应用程序中获取其输入和输出参数,以浏览对象并显示它们的参数和其他属性。

到目前为止,我发现了 SQL 系统函数 object_definition,它接受给定的 sysobjects.id 并返回该对象的文本;还通过搜索 this post 发现,它描述了使用 ADO.NET 方法 DeriveParameters 结合一些缓存在应用程序上下文中提取参数以获得更好的性能;并且从Hidden Features of SQL Server 上的早期帖子中找到了一些有用的系统存储过程。

我倾向于在我的 C# 应用程序中实现 DeriveParameters 方法,因为解析 object_definition 的输出看起来很乱,而且我还没有找到隐藏的功能到目前为止,该帖子可以解决问题。

DeriveParameters 是否适用于函数和存储过程以检索其参数,如果是,有人可以提供一个示例吗?

【问题讨论】:

【参考方案1】:

请试试这个:

select
PARAMETER_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
PARAMETER_MODE,
NUMERIC_PRECISION,
NUMERIC_SCALE
from INFORMATION_SCHEMA.PARAMETERS
where specific_name = @chvProcName
order by ordinal_position

查找 PARAMETER_MODE,它的值为 OUT

从here获得此信息

HTH

【讨论】:

谢谢,这绝对有帮助;如果我在 .NET 中没有看到任何特定于 DeriveParameters 方法的响应,我会奖励你答案。

以上是关于检索 SQL 存储过程和函数的输入和输出参数?的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL轻量版——存储函数/存储过程

PL/SQL程序设计—— 存储函数&存储过程

如何在 SQL Server 存储过程/函数中声明输入输出参数?

SQL Server存储过程中使用表值作为输入参数示例

oracle数据库之存储函数和过程

如何在SQL Server存储过程/函数中声明输入输出参数?