我在 DB2 的 SQLRPGLE 中有以下查询:
INSERT INTO ITEMS2 (PROGRAM, VLDFILE, VLDFLD,
SELFILE, SELFLD) VALUES(:SCAPP , 'CSTMR', 'CYC',
'BYC', 'BYCC');
我希望此查询在 2 个库中运行,如第一个/项目2 和第二个/项目2
其中 FIRST 和 SECOND 是库名称。这可以在一个查询中实现吗?
对于那些不了解 iSeries 的人:上面的插入语句类似于对 2 个表进行插入查询。
INSERT 语句不支持插入到多个表中。
但是,您可以在FIRST/ITEMS2
上创建一个触发器,以自动将记录插入/更新/删除SECOND/ITEMS2
。
有关详细信息,请参阅 CREATE TRIGGER 语句。
如果这将经常运行,请考虑将 INSERT 放入存储过程中,然后通过 SET 架构设置目标架构:
set schema=first;
call my_insert_proc(:scapp);
set schema=second;
call my_insert_proc(:scapp);
你可以像这样创建一个 QMQuery
INSERT INTO &LIB/ITEMS2
(PROGRAM, VLDFILE, VLDFLD, SELFILE, SELFLD)
VALUES (&SCAPP, 'CSTMR', 'CYC', 'BYC', 'BYCC');
然后
STRQMQRY myQmQry SETVAR(('LIB' 'FIRSTLIB')('SCAPP' &VAR))
STRQMQRY myQmQry SETVAR(('LIB' 'SECONDLIB')('SCAPP' &VAR))
从IBM的INSERT
语法图(http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Fdb2%2Frbafzbackup.htm),我会说你必须使用两个查询。
但是在第一次执行此查询后,您可以尝试更改当前库(http://publib.boulder.ibm.com/infocenter/iadthelp/v7r1/topic/com.ibm.etools.iseries.langref2.doc/chglibl.html)。