我的 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(使用前将#替换为@)