Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 生成器在Firebird的insert语句中的用法_Sql_Firebird - Fatal编程技术网

Sql 生成器在Firebird的insert语句中的用法

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

我在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,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网站获得)。