在 C/C++ 中使用 Oracle Pro*C,我们可以使用主机数组来管理对 EMP 表的批量插入,如下例所示:
struct
{
char ename[3][10];
int eno[3];
} emp_rec1;
struct
{
int dno[3];
} emp_rec2;
...
strcpy(emp_rec1.ename[0], "e1");
strcpy(emp_rec1.ename[1], "e2");
strcpy(emp_rec1.ename[2], "e3");
emp_rec1.eno[0] = 1964; emp_rec2.dno[0] = 5;
emp_rec1.eno[1] = 1974; emp_rec2.dno[1] = 5;
emp_rec1.eno[2] = 1985; emp_rec2.dno[2] = 5;
EXEC SQL INSERT INTO emp (ename, eno, dno)
VALUES (:emp_rec1, :emp_rec2);
我可以使用EXEC SQL MERGE
一种 MERGE 来先尝试更新(如果 ename 和 eno 存在),并且 dno 得到更新,如果不存在,那么当然插入进行批量合并而不是尝试一次合并一条记录,e ,g,先做一个选择,记录存在,尝试更新否则应用插入。请帮助提供与 Pro*C 中的嵌入式 SQL 类似的批量合并示例和语法。