SELECT 语句字段列表中的参数 - 错误:数据类型未知

2023-12-13

我的 Firebird(嵌入式)数据库有问题。我想在 select 语句中设置一个参数值。例如:

SELECT name, surname, :string AS myText
FROM myTable

where :string是一个参数。 上面的代码在 SQLite 中运行,结果是(当参数为“abcdef”时):

+------+---------+---------+
|name  |surname  |myText   |
+------+---------+---------+
|John  |Black    |abcdef   |
+------+---------+---------+
|Thomas|Young    |abcdef   |
+------+---------+---------+
|...   |...      |abcdef   |
+------+---------+---------+
|nameX |surnameY |abcdef   |
+------+---------+---------+

当我尝试执行此查询时,我收到以下消息:“在 SQL 语句的应用程序输入参数中发现错误。

Dynamic SQL Error.
SQL error code = -804.
Data type unknown.

问题是 Firebird 需要知道参数的数据类型。 IIRC 在 SQLite 中,一切都是字符串,但在 Firebird 中并非如此。

您需要显式转换参数以告知 Firebird 所需的类型,例如:

SELECT name, surname, cast(? as varchar(100)) AS myText
FROM myTable

哪里的?是一个位置参数。 Firebird 没有命名参数(过程中除外),但是如果您的访问库模拟命名参数,那么以下内容可能也可以工作:

SELECT name, surname, cast(:string as varchar(100)) AS myText
FROM myTable

在 select-clause 中转换参数的功能在旧版 Firebird 中不起作用(我相信它是在 Firebird 2.5 中引入的,但我不是 100% 确定)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SELECT 语句字段列表中的参数 - 错误:数据类型未知 的相关文章

  • 您如何看待 Postgres 和 Firebird 数据库? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在尝试在 postgr
  • Firebird 2.1 - 简单选择

    我想合并一些数据 但一个简单的选择示例不起作用 选择现有的表工作正常 SELECT 1 as foo 信息 can t format message 13 896 message file C xxxx firebird msg not f
  • Paradox 如何管理 null 值和空值?

    我通过 Borland 数据库引擎 BDE 使用 Paradox 表 我无法领悟道路null and 空字符串值在字符串字段中处理 Paradox 数据类型 A 我的具体问题是如何确定字段值是否为空或空字符串 在数据库桌面工具中 它们似乎都
  • 在 Firebird 的服务器端使用生成器值时,如何不浪费它们?

    检查这段简单的代码 它使用生成器在 Firebird 表中创建唯一的主键 CREATE OR ALTER TRIGGER ON BEFOREINSERT PK BOOKING ITEM FOR BOOKING ITEM BEFORE INS
  • jdbc 小程序出现 NoClassDefFoundError

    我使用 Eclipse 创建了一个小程序 package gui public class MyApplet extends JApplet 该小程序需要两个外部 jar proj jar 和 firebirdsql full jar jd
  • 如何备份/恢复Firebird数据库?

    我对 Firebird v2 5 备份 恢复过程感到非常困惑 我应该使用什么来备份 恢复本地 Firebird 数据库 fbsvcmgr exe gbak exe isql exe or nbackup exe 这些都是选项还是我错了 对于
  • 基于C#列表而不是过滤表过滤sql

    假设我有一个包含以下数据的表 现在我想按主键部门和号码进行过滤 我有一个必须在代码中过滤的部门和号码组合的列表 在我看来 我会创建一个连接 结果如下 select from employee e inner join dynamicTabl
  • 我可以在Where 子句中使用Firebird DateAdd 函数吗?

    在火鸟中我可以使用DateAddwhere 子句中的函数 我有以下sql select s number s warranty start from serial number s where s warranty start gt dat
  • 在 Firebird 脚本中创建表导致“元数据更新失败”并出现死锁

    我有使用 isql i scriptfile sql 运行的以下脚本 CONNECT C Databasefile fdb USER user PASSWORD password SET TERM EXECUTE BLOCK AS BEGI
  • dbExpress/未指定键

    我正在开发一个数据库程序 使用 dbExpress 组件 Delphi 7 通过以下组件从数据库检索数据 TSQLDataSet gt TDataSetProvider gt TClientDataSet gt TDatasource gt
  • Spring JDBC 和 Firebird 数据库

    有没有人actually将 Firebird 2 1 与 Spring JDBC 一起使用 出于测试目的 我在 MySQL Postgres 和 Firebird 中设置了三个简单的单表数据库 我在连接 MySQL 或 Postgres 并
  • NHibernate使用Firebird自己的生成器

    在 Firebird DB 中有自己的生成器 称为GEN PATIENT ID我想将 ID 的生成留在 DB 端 而不是 NHibernate 和 FluentNHibernate 通过此链接 我将覆盖默认的 Fluent 行为 例如thi
  • Firedac select 与 Firebird 一起使用不返回任何记录

    您好 我正在使用 Firebird 2 5 作为数据库与 Firedac Delphi Seattle 合作 当我使用 TFDQuery 运行此查询时 没有返回任何记录 SELECT ID FROM USERS WHERE PWD H 数据
  • Node-firebird顺序选择

    我正在尝试使用顺序选择选项从 Firebird DB 获取数据 我想获取前 500 行 正如您在我的代码中看到的那样 为了进行测试 我为每个 行 增加 k 并记录 k 和 md5 到控制台 当我运行代码时 它会给出随机的行数 但行数总是超过
  • Java 中 Firebird 和 HSQLDB 之间的选择

    我想用 Java 编写一个小型 5 6 个表 桌面应用程序 我想使用 Firebird 2 1 数据库 但我用谷歌搜索并看到了 HSQLDB 我想在 Firebird 和 hsqldb 之间做出决定 那么我必须使用哪个数据库 Firebir
  • 如何跟踪服务 firebird

    如何使用delphi xe10跟踪服务firebird服务器的所有事件 这是我的代码 my TIBControlService Create Self my ServerName 127 0 0 1 3050 my Protocol TPr
  • 使用默认 FIREBIRD 将 null 插入非 null 列

    将 null 插入默认的非空列会给我一个验证错误 而不是采用默认值 我不想在所有表上触发之前 还有其他方法可以做到这一点吗 火鸟2 1 3 当您在插入中省略字段时 而不是在包含具有空值的字段时 将使用默认值 Example 使用默认值Nam
  • 传输到 ClientDataset 时的字符串截断

    我正在使用 Firebird 2 1 DevArt 的 DBExpress 驱动程序和 Delphi 2010 我的一些用于 Delphi 2006 的报告停止工作并生成一条错误消息 指示发生了 算术异常 数字溢出或字符串截断 我的代码此时
  • 我想在 Firebird 上获得 unix 时间

    我想在 firebird 中获取时间 类似于 Javascript 上的 GetTime 我已经创建了一个 但每天的时差增量并不那么准确 CREATE PROCEDURE GETTIMEINMILLISECONDS RETURNS MILL
  • Firebird数据库模式/数据差异工具

    RedGate http www red gate com为 Microsoft SQL Server 制作一个工具 允许您捕获两个数据库之间的差异 它生成更新数据库模式所需的脚本 同时保留数据 我需要为 Firebird 数据库找到这样的

随机推荐