1

在 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 类似的批量合并示例和语法。

4

1 回答 1

2

我正在查看使用合并命令的 pro*c 代码。它执行以下操作。

 EXEC SQL
 EXECUTE 
 BEGIN
         MERGE INTO aTable
         USING
         ...
         WHEN MATCHED THEN
             UPDATE SET
         ...
END;
END-EXEC;
于 2017-01-26T20:28:33.637 回答