【问题标题】:[Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error (SQL State: 07001; SQL Code: 0)[使用 ODBC 的通用连接][Microsoft][ODBC SQL Server 驱动程序]COUNT 字段不正确或语法错误(SQL 状态:07001;SQL 代码:0)
【发布时间】:2012-10-26 01:39:10
【问题描述】:

第 1 行出现错误:
ORA-28500:从 ORACLE 到非 Oracle 的连接 系统返回此消息:
[通用连接使用 ODBC][Microsoft][ODBC SQL Server 驱动程序]
COUNT 字段不正确或语法错误
(SQL 状态:07001;SQL 代码:0) ORA-06512:第 9 行

任何人都知道这个错误..请帮助我们。

提前致谢。

【问题讨论】:

  • 您能至少显示导致此错误的查询吗?什么设置?涉及到 SQL Server 和 Oracle - 它们是如何连接的?你需要在你的问题上付出更多的努力
  • 您需要向我们展示第 1 行(即产生错误的代码)以便我们提供帮助。您是否尝试过直接在 SQL Server 上运行传递查询?
  • @user1802125 你真的需要把你的SQL放在你问题下面答案的评论中。

标签: sql-server oracle


【解决方案1】:

由于您没有提供生成此错误的任何类型的代码,我只能在这里猜测。在询问 Google 并找到 this 后,看起来 COUNT field incorrect or syntax error 可能意味着您在调用中使用了错误数量的参数。

如果您发布了从中生成错误的代码,则有助于了解可能出现的问题。

【讨论】:

  • 声明 c INTEGER; nr 整数; v_jv VARCHAR2(20);开始 c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@SQLDB; DBMS_HS_PASSTHROUGH.PARSE@SQLDB(c,'begin; getLocation &?; end;'); DBMS_HS_PASSTHROUGH.BIND_OUT_VARIABLE@SQLDB(c, 1, v_jv); nr := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@SQLDB(c); DBMS_HS_PASSTHROUGH.GET_VALUE@SQLDB(c, 1, v_jv); DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@SQLDB(c); - 犯罪; dbms_output.put_line('v_PLACE='||v_jv);结束;
  • 这里 getLocation 是 SQL Server 存储过程,它只返回一个 out 参数。我们解决了一个和多个 IN 参数成功使用 DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE。
  • 这是否意味着您使用 EXECUTE_IMMEDIATE 解决了您的问题?在上面的 PARSE 调用中,您不必使用 exec 来调用该过程吗?我无权访问 MSSQL 服务器来对此进行测试。
【解决方案2】:

我刚刚浪费了至少一个小时以上的时间来调试我的代码以查看问题所在。我在 VBA 中使用带有参数的 ADODB 连接。显然,如果没有 Set 关键字,调试输出将看起来参数有一个值,但它实际上并不存在于上游。我当然知道需要Set,但是当你试图发现问题时很容易忽略它。

问题:

    params(1) = cmd.CreateParameter("Email_ID", adInteger, adParamInput, , EmailID)

更正的代码:

    Set params(1) = cmd.CreateParameter("Email_ID", adInteger, adParamInput, , EmailID)

【讨论】:

    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多