Sql 生成器在Firebird的insert语句中的用法
我在Flamerobin(Firebird 2.1)中执行了以下语句。它在编辑器窗口中不断报告以下错误 “动态SQL错误SQL错误代码=-104无效的命令计数” 列列表和变量列表不匹配“ 通常情况下,列是匹配的,列计数中没有任何不匹配,但是有生成器,我相信它在单例基础上工作,并且从union语句生成的数据集可能是错误的来源Sql 生成器在Firebird的insert语句中的用法,sql,firebird,Sql,Firebird,我在Flamerobin(Firebird 2.1)中执行了以下语句。它在编辑器窗口中不断报告以下错误 “动态SQL错误SQL错误代码=-104无效的命令计数” 列列表和变量列表不匹配“ 通常情况下,列是匹配的,列计数中没有任何不匹配,但是有生成器,我相信它在单例基础上工作,并且从union语句生成的数据集可能是错误的来源 insert into test_table (load_name, X, Y, Z) values ( gen_id(gen_new,1), (select X_I,Y_I
insert into test_table (load_name, X, Y, Z) values (
gen_id(gen_new,1), (select X_I,Y_I,Z_I from
(
select e1.X_I,e1.Y_I,e1.Z_I from ELEMENTS e1
union
select e2.X_J,e2.Y_J,e2.Z_J from elements e2
)
) )
表的DDL为:
CREATE TABLE TEST_TABLE
(
LOAD_NAME Char(20) NOT NULL,
FACTOR Integer,
NEW1 Integer,
"new" Float,
X Float,
Y Float,
Z Float,
PRIMARY KEY (LOAD_NAME)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
ON TEST_TABLE TO SYSDBA WITH GRANT OPTION;
从未使用过firebird,但如果它像其他sql框架一样,您需要它
insert into test_table (load_name, X, Y, Z)
(select en_id(gen_new,1), X_I,Y_I,Z_I from
(
select e1.X_I,e1.Y_I,e1.Z_I from ELEMENTS e1
union
select e2.X_J,e2.Y_J,e2.Z_J from elements e2
)
)
据我所知,
Firebird
不支持您的INSERT
语法。
您可以使用values
语法提供列值,也可以使用SELECT
语句检索列值,但我怀疑它们是否可以组合在一个语句中
你可能已经知道它不含水果,但用途有限
下面应该是工作
insert into test_table (load_name, X, Y, Z)
select gen_id(gen_new, 1), foo.X, foo.Y, foo.Z
from (
select e1.X_I AS X, e1.Y_I AS Y, e1.Z_I AS Z from elements e1
union
select e2.X_J, e2.Y_J, e2.Z_J from elements e2
) foo
注意:-以联合馈送方式对第一个select语句中的列进行别名处理将使它们在外部查询中以这样的名称可用。我将文档链接更新为较新的语言引用更新,但请注意,这只是一个更新,有关完整信息,您还需要使用Interbase 6语言参考(也可从Firebird网站获得)。