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 缺失或版本不正确,或者变量的数量/类型不正确的主要内容,如果未能解决你的问题,请参考以下文章
如果搜索参数为空白或缺失/错误,我如何使用 Xpath 函数“contains()”不返回任何内容?
firebird 数据库恢复 firebird数据库修复 interbase数据库恢复 firebird blob错误恢复