通过 ODBC 调用存储过程而不声明参数占位符
本文关键字:声明 参数 占位符 ODBC 调用 存储过程 通过 | 更新日期: 2023-09-27 17:56:44
我目前正在尝试通过ODBC
来抽象存储过程的调用,方法是创建一个函数,该函数需要将过程名称作为字符串,并将一组键和值作为字典。正因为如此,我必须为ODBC Command
建立一个字符串,即..是的,愚蠢。
CALL myProcedure(?, ?, ?, ?)
然后使用 ODBC 命令对象:
odbcCommand.Parameters.AddWithValue("key", "param");
现在要添加参数,我可以轻松地进行foreach
.甚至是带有Select
的 LINQ 样式。但我还必须创建带有问号的CALL
字符串,我必须小心这样的事情永远不会发生:
CALL myProcedure(?, ?, ?, )
所以我必须遍历字典一次以添加参数,第二次循环将键和值连接到字符串 ( String.Join
),或者我使用 FOR
循环遍历所有内容,并且必须检查当前KeyValuePair
是否是最后一个只是为了防止字符串末尾意外出现逗号。
有没有办法让我可以声明" CALL myProcedure
"甚至类似的东西
odbcCommand.CommandType = CommandTypes.StoredProcedure;
odbcCommand.ProcedureName = "myProcedure";
[LOOP]
- add Params damn comfortable
[/LOOP]
我希望有......这将帮助我减少由于无稽之谈而需要的额外步骤!
谢谢
添加参数后,使用以下命令:
int paramCount = odbcCommand.Parameters.Count();
string[] placeholders = Enumerable.Repeat("?", paramCount).ToArray();
string callParams = String.Join(", ", placeholders);
然后,您不再需要小心避免 CALL 字符串中引用的尾随逗号。(我意识到这并不能完全回答您消除占位符的问题。