Parameter in SELECT statement's fields list - error: Data type unknown

Parameter in SELECT statement's fields list - error: Data type unknown

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

SELECT name, surname, :string AS myText
FROM myTable

其中 :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 需要知道参数的数据类型。 SQLite 中的 IIRC,一切都是字符串,但在 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 子句中转换参数的能力在旧的 Firebird 版本中不起作用(我相信它是在 Firebird 2.5 中引入的,但我不是 100% 确定)。