将执行过程的结果插入 table

Insert results of execute procedure into a table

CREATE PROCEDURE kassa_ins()
    RETURNING int,int,int;
    return 1, 2, 3;
END PROCEDURE

CREATE TRIGGER "informix".on_ins_kassa INSERT ON "informix"
    .kassa REFERENCING NEW AS n_val
FOR EACH ROW(
    INSERT INTO "informix".kassa_log(col1,col2,col3)
    VALUES(kassa_ins())
);

SQL Error (-236): Number of columns in INSERT does not match number of VALUES.

如何将程序触发器中的结果插入到另一个 table? IBM Informix 动态服务器版本 11.70

就像另一个中所说的那样:

[infx1210@tardis ~]$ dbaccess -e dmitriy test.sql

Database selected.

CREATE TABLE "informix".kassa (
        col1 INT,
        col2 INT,
        col3 INT
);
Table created.



CREATE TABLE "informix".kassa_log (
        col1 INT,
        col2 INT,
        col3 INT
);
Table created.



CREATE FUNCTION "informix".kassa_ins()
    RETURNING int,int,int;
    RETURN 1, 2, 3;
END FUNCTION;
Routine created.

;

CREATE TRIGGER "informix".on_ins_kassa
        INSERT ON "informix".kassa
                REFERENCING NEW AS n_val
                        FOR EACH ROW(
                                INSERT INTO "informix".kassa_log(col1,col2,col3)
                                SELECT * FROM TABLE(kassa_ins())
);
Trigger created.



INSERT INTO "informix".kassa(col1,col2,col3)
        SELECT * FROM TABLE(kassa_ins());
1 row(s) inserted.



SELECT * FROM "informix".kassa;

       col1        col2        col3

          1           2           3

1 row(s) retrieved.


SELECT * FROM "informix".kassa_log;

       col1        col2        col3

          1           2           3

1 row(s) retrieved.



Database closed.

[infx1210@tardis ~]$