Interbase 错误:SQLDA 缺失或版本不正确,或者变量的数量/类型不正确

Posted

技术标签:

【中文标题】Interbase 错误:SQLDA 缺失或版本不正确,或者变量的数量/类型不正确【英文标题】:Interbase Error: SQLDA missing or incorrect version, or incorrect number/type of variables 【发布时间】:2009-11-25 18:04:16 【问题描述】:

我在许多通过 BDE 连接到 Interbase 的 TQuery 上收到此错误。确切的消息是:

一般 SQL 错误。动态 SQL 错误,SQL 错误代码 = -804,SQLDA 缺失或版本不正确,或变量数量/类型不正确。

当我尝试在设计时打开/编辑TQuery 或在运行时完成发布时,该消息就会出现。对于运行时的 Post 操作,我发现如果我在 Post 之前准备表,则 Post 做得很好。

我已阅读Craig Stunz's Weblog about same error。我的参数都是整数。数据库很小,Interbase 2009,我没有看到显示错误消息的查询的特定模式(可以选择、删除、更新等)。在 Delphi 之外运行查询就可以了。

表格具有数字数据类型 (15,2)。

这些表已从 Interbase 版本 5 - 方言 1 备份/恢复到 Interbase 2009。

实际 ODS 为 13.1(Interbase 9)。

没有 UDF。

知道有什么问题吗?

[更新]

未显示错误/显示错误的查询示例:

没有错误:

select MASTER_ID, GL_ACCT_DR, GL_ACCT_CR,
VENDOR_ID, VENDOR_CODE,
ORDER_NO, ORDER_DATE, INVOICE_NO, INVOICE_DATE,
DESCRIP, BUYER, SHIP_VIA, FOB, IS_FREIGHT_PREPAID,
IS_TAXABLE, TERMS_ID, TERMS_CODE,
DISC_DAYS_OR_DATE, DISCOUNT_PCT, NET_DAYS_OR_DATE,
BILL_TO_LOC_ID, SHIP_TO_LOC_ID,
BILL_TO_LOC_CODE, SHIP_TO_LOC_CODE,
DISCOUNT_DATE, DUE_DATE
from P_JRNTRN where
ENTITY_DB_ID = :PRIMARY_DB_ID and
SRC_MODULE = 'PJ'
order by INVOICE_NO

参数为整数。

错误:

select * from P_JRNTRN where
BATCH_ID = :BATCH_ID
order by MASTER_ID

参数为整数。

[更新] ... 我无法解决这个问题,所以我搬到了 IBDAC 来代替 BDE。我没有更多的错误。 谢谢大家。

【问题讨论】:

你能发布一个示例查询吗?很久以前,我曾经遇到过这个错误,但我很难记住问题是什么。我有一种感觉,我们看到它的字符集不匹配,但我想你不是这种情况。 字符集是默认值。我知道我很少有字段类型不匹配(翻译形式 interbase 5 t0 9)。我将发布一些示例查询 - 谢谢。 啊,感谢您发布编辑。该表中是否还有其他字段(考虑 select * 和 select [named] 之间的区别)?您可以发布该表的架构吗?我们在使用旧的 Interbase 和长字段/存储过程名称时遇到了问题,这导致它做了奇怪的、意想不到的事情,但再次认为这不是问题所在(仅使用前 12 个字符,但我的记忆力很差)。不明白为什么这会在旧的 Interbase 而不是在新的 Interbase 中起作用 - 更有可能是相反的方式! 【参考方案1】:

在我看来,您的方言 1 有问题。您是否检查过您的连接是否使用该方言?还是默认的 3?

【讨论】:

我确实从方言 1(interbase 5)转移到方言 1 或 3(interbase 2009)-> 相同的错误。注意:并非所有查询都给我一个错误。我已经发布了 quey 错误和 no 错误的***问题示例。谢谢。 尝试更改参数名称,可能与字段名称冲突【参考方案2】:

我遇到了同样的问题。我使用的是 DataDirect ODBC InterBase 驱动程序。

当我切换到官方的Firebird ODBC驱动时,我解决了。

【讨论】:

@EduardoCuomo,很抱歉,但我什至不记得我偶然发现此错误的应用程序...

以上是关于Interbase 错误:SQLDA 缺失或版本不正确,或者变量的数量/类型不正确的主要内容,如果未能解决你的问题,请参考以下文章

选择 AS 在 interbase 中不工作

如果搜索参数为空白或缺失/错误,我如何使用 Xpath 函数“contains()”不返回任何内容?

firebird 数据库恢复 firebird数据库修复 interbase数据库恢复 firebird blob错误恢复

oracle创建实例时出现ORA- 00922缺失或无效,忽略后出现ORA-28000账号已被锁定。

注销后权限缺失或权限不足错误

data.table::fread 不喜欢第一列中的缺失值