1

我有一个应用程序,它允许用户为我的应用程序生成的某些值输入带有占位符的 SQL 字符串。应用程序将用值替换占位符并通过各种数据库后端执行 SQL 字符串。

对于 ODBC 后端,我在 SQL 字符串上调用 SQLExecDirect(),它在常规查询上运行良好,但对于带参数的存储过程失败。

有没有一种简单的方法来扩展这种机制以支持存储过程?某种方式的SQL必须怎么写?

我现在唯一能想到的就是开始解析 SQL 字符串并调用 SQLBindParameter() n 次,如果它包含一个“调用”。但是解析 SQL 很棘手。

有任何想法吗 ?

工作 SQL 示例:SELECT columnA from foo where columnB = '%placeholder'

非工作 SQL: CALL StoredFoo('%placeholder')

4

1 回答 1

3

如何调用存储过程(ODBC)

将过程作为 RPC 运行

  1. 构造一个使用 ODBC CALL 转义序列的 SQL 语句。该语句为每个输入、输入/输出和输出参数以及过程返回值(如果有)使用参数标记:

    {? = CALL procname (?,?)}

  2. 为每个输入、输入/输出和输出参数以及过程返回值(如果有)调用 SQLBindParameter。

  3. 用 执行语句SQLExecDirect

否则,您需要将过程作为普通批处理(而不是 RPC 调用)执行,即。你需要运行批处理:

EXEC procname @param1, @param2, @param3...;
于 2010-08-17T17:39:52.830 回答