Informix SQL / 在表中插入存储过程的结果
Posted
技术标签:
【中文标题】Informix SQL / 在表中插入存储过程的结果【英文标题】:Informix SQL / insert result of stored procedure in table 【发布时间】:2015-08-05 09:34:24 【问题描述】:kassa_akt_revizii_parser('','','') returns field(per_monets_5,per_monets_10,per_monets_25,per_monets_50,per_rub_1,per_rub_5,per_rub_10,per_rub_25,per_rub_50,per_rub_100,per_rub_200,per_rub_500,per_val_376,per_val_428,per_val_498,per_val_643,per_val_840,per_val_978,per_val_980)
我们需要插入一个表格:
insert into kassa_akt_revizii_pereschet(
id_akt_revizii,per_monets_5,per_monets_10,per_monets_25,per_monets_50,
per_rub_1, per_rub_5, per_rub_10, per_rub_25, per_rub_50,
per_rub_100, per_rub_200, per_rub_500,per_val_376,
per_val_428, per_val_498, per_val_643, per_val_840,
per_val_978, per_val_980)
values(50, kassa_akt_revizii_parser('','',''));
INSERT 中的列数与 VALUES 的数量不匹配
【问题讨论】:
insert into kassa_akt_revizii_pereschet( id_akt_revizii, .......) select 50, t.* from kassa_akt_revizii_parser('','','') t
出现语法错误。
【参考方案1】:
INSERT 中的列数与 VALUES 的数量不匹配
您的错误消息只是表示虽然插入(列)与您要插入的(值)数量不匹配。
再次检查并再次插入。
插入查询:
insert into tablename (column1,column2,...column50) values (value1,value2...value50)
【讨论】:
如何插入?如果它对语法发誓【参考方案2】:试试这个方法:
INSERT INTO kassa_akt_revizii_pereschet(
id_akt_revizii,
per_monets_5,
per_monets_10,
per_monets_25,
per_monets_50,
per_rub_1,
per_rub_5,
per_rub_10,
per_rub_25,
per_rub_50,
per_rub_100,
per_rub_200,
per_rub_500,
per_val_376,
per_val_428,
per_val_498,
per_val_643,
per_val_840,
per_val_978,
per_val_980
)
SELECT 50, *
FROM TABLE(kassa_akt_revizii_parser('','',''));
例子:
[infx1210@tardis ~]$ dbaccess -e db1 test.sql
Database selected.
CREATE TABLE tab1( col1 INT, COL2 INT, COL3 INT);
Table created.
CREATE FUNCTION sp1() RETURNING INT, INT
RETURN 1, 2;
END FUNCTION;
Routine created.
;
INSERT INTO tab1 VALUES (0, sp1());
236: Number of columns in INSERT does not match number of VALUES.
Error in line 7
Near character position 26
INSERT INTO tab1
SELECT 1, *
FROM TABLE(sp1());
1 row(s) inserted.
SELECT * FROM tab1;
col1 col2 col3
1 1 2
1 row(s) retrieved.
Database closed.
[infx1210@tardis ~]$
【讨论】:
以上是关于Informix SQL / 在表中插入存储过程的结果的主要内容,如果未能解决你的问题,请参考以下文章