sql-server - 从不同数据库获取存储过程参数的通用方法
问题描述
我正在尝试向当前为 MSSQL 编写的应用程序添加对 PostgreSQL 的支持。在 C# 中,我希望尽可能使用“一个代码供所有人使用”。
有一堆存储过程,它们在 Postgres 中被重写为函数。在代码中,为了检索 sp 参数元数据,曾经有特定于 ms 的sp_procedure_params_rowset
. 我将其更改为:
select p.data_type, p.parameter_name, p.ordinal_position, p.parameter_mode
from information_schema."routines" r
join information_schema.parameters p on r.specific_name=p.specific_name
where r.routine_schema = 'schema' and r.routine_name = 'procedure_name'
这适用于 Postgres,但是,对于 MSSQL,parameter_mode 对于设置为输出的参数是 INOUT。例如CREATE PROCEDURE [sp_login] @login varchar(50), @uid int output...
将返回
varchar @login 1 IN
int @uid 2 INOUT
现在代码对于 MSSQL 失败了,因为它需要参数 @uid。
MSSQL 是否有理由在 information_schema.parameters INOUT 中说实际上它是一个 OUT 参数?
是否有从不同数据库检索元数据的“通用”方法?或者没有办法解决它,我必须在 C# 中编写一些条件?
解决方案
推荐阅读
- javascript - 如何在 React 中单击按钮时显示和隐藏元素?
- bash - Bash:如何在系统范围内限制文件大小或设置为更大的值?
- python - 谷歌云运行上的烧瓶舞Facebook登录错误
- python - 无法让 2 个不同的正则表达式查找器调用在 Python 的循环中工作
- mongodb - 使用 $near/$geoNear 未获得结果 - 嵌套位置对象中的 GeoJSON
- php - 如何在单个帖子页面中查询以获取当前自定义帖子的值?
- javascript - 如何在axios中渲染数字/整数?
- reactjs - npm install 没有在 package.json 中安装正确的版本
- javascript - IPad深色模式主题中的Html拖放背景颜色
- ssh - 为远程 ssh 设置 pyCharm pro