【问题标题】:How can I determine the number of expected parameters in an arbitrary SQL statement?如何确定任意 SQL 语句中预期参数的数量?
【发布时间】:2012-07-10 21:15:46
【问题描述】:

我想编写一些 .NET 代码(最好是 C#)来确定任意 SQL 语句中预期参数的数量。比如这个语句

EXEC etlp.LogPackageEnd ?,?,? 

需要 3 个参数。

作为一个 SQL 新手,我花时间阅读其他关于如何解决这个问题的帖子。我已经按照here 的建议尝试使用 TSql100Parser.GetTokenStream,但它为每个问号返回了解析错误。我也尝试过使用 Microsoft.SqlServer.Management.SqlParser.Parser.Parser.Parse() 但在附近出现语法错误?

我意识到我可以使用正则表达式,但我正在寻找通用解决方案;我的理解是参数格式可以改变,所以问号不是指标。

【问题讨论】:

  • 您是否要查找存储过程的参数数量?
  • 不仅仅是存储过程。我相信问号可以用作 OLE-DB SQL 语句中参数的占位符。此外,问号可能出现在 SELECT * FROM Table1 WHERE Column1 = ?我想处理这些类型的语句,以及在执行存储过程时。
  • 当命令类型为 StoredProcedure 时,OleDbCommandBuilder 提供了 DeriveParameters 方法,但 MSDN 文档明确指出您不能对参数化查询使用该方法:(

标签: .net sql smo


【解决方案1】:
SELECT name
FROM sys.parameters
WHERE object_id = OBJECT_ID('YourProcedureName')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多