如何通过ODBC在Microsoft Access数据库中执行具有参数(即,PARAMETERS声明)的预定义查询?

问题溢出

我的简单问题如下:

如果我有一个带有定义的“查询”的Microsoft Access数据库(即,MS Access调用查询的数据库对象的种类,只是为了避免任何歧义)定义为采用参数(在其SQL定义内使用PARAMETERS声明)在ODBC连接上调用它(包括提供参数值)的正确SQL语法是什么?

编辑/添加:

我只是注意到,可以通过在整个CALL命令周围添加花括号来完成此操作,如下所示:

{CALL myAccessQuery ('string1', 'string2', 'string3')}

实际上,这正是他们在其他相关的SO线程中已经做过的事情,但我只是认为这是一些C#特有的魔术,与他们的SQL语句的预准备语句性质有关(使用“?”)。 ”或其他SQL库的特殊性(我没有使用该语言),因此以前我忽略了它。

任何人都将解释大括号是什么,以及为什么它们允许执行比下面的错误消息中显式说明的受支持的命令更多的SQL命令,将被视为该问题的答案。

有关我的具体情况的更多详细信息:

我的查询采用三个参数,这些参数由查询声明开头的“ PARAMETERS”子句定义,如下所示:

PARAMETERS myParam1 Text ( 255 ), myParam2 Text ( 255 ), myParam3 Text ( 255 );
SELECT ... <a bunch of not relevant stuff here> ;

使用一个(已经建立并确认正常工作的)ODBC连接,我想从外部应用程序使用此查询,包括为其提供所需的三个参数。

运行SELECT之类的普通查询在通过我的外部应用程序进行连接时效果很好,但是无论我用多少google,我似乎都无法找到正确地提供参数并运行查询的正确方法?因此,我的问题再次是,执行此操作的正确SQL语法是什么?

注意:我希望为某些特定库或类似库提供任何特定于API的解决方案,因为这只能解决所有希望通过不同编程语言执行此操作的开发人员中的很小一部分的问题,因此,我不会甚至用我的外部应用程序编写的语言。我只想要执行此操作的完整SQL语法,仅此而已。

另一个SO问题指示应使用“ CALL”关键字完成此操作,但是当我尝试从应用程序中使用此关键字时,我仅收到以下错误消息:

[42000] [Microsoft] [ODBC Microsoft Access驱动程序]无效的SQL语句;预期的“删除”,“插入”,“过程”,“选择”或“更新”。

即,这是我在遇到此错误时试图执行的“ SQL命令”(目的是避免使用模糊的术语“查询” ...):

CALL myAccessQuery ('string1', 'string2', 'string3')

错误消息中提到的似乎唯一有用的SQL关键字之一就是“ PROCEDURE”关键字,但在Google上与此相关的任何相关文档的查找也遇到了同样大的困难。:-(

我怀疑Google在整个情况下缺乏结果的大部分原因是涉及上下文中或多或少所有中心关键字的众多含混不清之处,例如“查询”,“参数”,“执行”,“调用”和“ “过程”,因此对于这样的SO问题,我希望它会构成一个更容易识别和索引的答案,以便将来由Google提出。

C.怀特

通过ODBC连接时,请查看特定于驱动程序的信息,以查看其是否支持各种ODBC扩展(由ODBC调用中的花括号指示):

https://msdn.microsoft.com/zh-CN/library/ms675326(v=vs.85).aspx

具体来说:

ODBC提供了用于调用存储过程的特定语法。对于Command对象的CommandText属性,Connection对象上Execute方法的CommandText参数,或Recordset对象上Open方法的Source参数,使用以下语法传递一个字符串:

    "{ [ ? = ] call procedure [ ( ? [, ? [ , … ]] ) ] }"

每个 ?引用Parameters集合中的对象。首先 ?引用Parameters(0),下一个?引用Parameters(1),依此类推。参数引用是可选的,并且取决于存储过程的结构。如果要调用未定义任何参数的存储过程,则字符串将如下所示:

    "{ call procedure }"

Access ODBC驱动程序将已保存的SELECT参数查询作为存储过程公开,因此这就是您使用此语法的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过ODBC C#绑定参数?

来自分类Dev

如何通过ASP.NET中的ODBC连接将查询插入Excel?

来自分类Dev

通过Access中的ODBC链接表更新SQLite数据库

来自分类Dev

如何使“ Microsoft ODBC for Oracle”驱动程序在Windows 7中工作

来自分类Dev

在与.NET中的iSeries AS400数据库的ODBC连接中使用查询参数吗?

来自分类Dev

如何通过ODBC连接对BigQuery进行查询?

来自分类Dev

如何通过ID查询数据库中的所有条目?

来自分类Dev

如何通过ODBC从系统间缓存数据库中获取数据?

来自分类Dev

如何在不同的数据库中执行SQL查询

来自分类Dev

如何从Qt应用程序通过ODBC连接到MySQL数据库?

来自分类Dev

如何使用SQL查询联接数据库中具有相似名称的一组表?

来自分类Dev

如何在PHP中通过ODBC设置普及数据库的编码?

来自分类Dev

如何在Diesel中对Postgres数据库执行带有子查询的删除?

来自分类Dev

ODBC:从Microsoft Access导出到Postgres失败

来自分类Dev

在通过ODBC连接到数据库的R中,如何在运行一个查询以发送另一个查询而不取消前一个查询后断开连接?

来自分类Dev

如何使用sp_ExecuteSql对名称在变量中的数据库运行带有参数的查询

来自分类Dev

如何通过ODBC从系统间缓存数据库中获取数据?

来自分类Dev

如何在Java数据库ODBC中设置路径

来自分类Dev

保存具有从Microsoft Access数据库读取多个数据的SQL结果

来自分类Dev

OLEDB / ODBC连接如何仅通过名称知道SQL Server数据库的路径?

来自分类Dev

如何通过我的Android应用程序在Microsoft Azure数据库上执行请求

来自分类Dev

如何在具有9个表的规范化数据库中执行mysql join

来自分类Dev

通过ODBC访问内存中的sqlite数据库

来自分类Dev

如何从sql数据库中查询具有所有指定单词的歌曲?

来自分类Dev

如何通过 setup.rul 中的 installshield 安装 64 位 odbc?

来自分类Dev

Laravel 如何查询具有多个表的数据库?

来自分类Dev

进行 MS Access 查询,允许通过 ODBC 驱动程序将数据输入到 PostgreSQL 数据库

来自分类Dev

如何从数据库中选择具有相同查询但条件不同的表中的数据?

来自分类Dev

如何通过 ODBC 使用参数更新数据库?

Related 相关文章

  1. 1

    如何通过ODBC C#绑定参数?

  2. 2

    如何通过ASP.NET中的ODBC连接将查询插入Excel?

  3. 3

    通过Access中的ODBC链接表更新SQLite数据库

  4. 4

    如何使“ Microsoft ODBC for Oracle”驱动程序在Windows 7中工作

  5. 5

    在与.NET中的iSeries AS400数据库的ODBC连接中使用查询参数吗?

  6. 6

    如何通过ODBC连接对BigQuery进行查询?

  7. 7

    如何通过ID查询数据库中的所有条目?

  8. 8

    如何通过ODBC从系统间缓存数据库中获取数据?

  9. 9

    如何在不同的数据库中执行SQL查询

  10. 10

    如何从Qt应用程序通过ODBC连接到MySQL数据库?

  11. 11

    如何使用SQL查询联接数据库中具有相似名称的一组表?

  12. 12

    如何在PHP中通过ODBC设置普及数据库的编码?

  13. 13

    如何在Diesel中对Postgres数据库执行带有子查询的删除?

  14. 14

    ODBC:从Microsoft Access导出到Postgres失败

  15. 15

    在通过ODBC连接到数据库的R中,如何在运行一个查询以发送另一个查询而不取消前一个查询后断开连接?

  16. 16

    如何使用sp_ExecuteSql对名称在变量中的数据库运行带有参数的查询

  17. 17

    如何通过ODBC从系统间缓存数据库中获取数据?

  18. 18

    如何在Java数据库ODBC中设置路径

  19. 19

    保存具有从Microsoft Access数据库读取多个数据的SQL结果

  20. 20

    OLEDB / ODBC连接如何仅通过名称知道SQL Server数据库的路径?

  21. 21

    如何通过我的Android应用程序在Microsoft Azure数据库上执行请求

  22. 22

    如何在具有9个表的规范化数据库中执行mysql join

  23. 23

    通过ODBC访问内存中的sqlite数据库

  24. 24

    如何从sql数据库中查询具有所有指定单词的歌曲?

  25. 25

    如何通过 setup.rul 中的 installshield 安装 64 位 odbc?

  26. 26

    Laravel 如何查询具有多个表的数据库?

  27. 27

    进行 MS Access 查询,允许通过 ODBC 驱动程序将数据输入到 PostgreSQL 数据库

  28. 28

    如何从数据库中选择具有相同查询但条件不同的表中的数据?

  29. 29

    如何通过 ODBC 使用参数更新数据库?

热门标签

归档