Oracle Pro * C批量使用主机阵列合并C / C ++中的记录

时间:2016-07-30 13:09:27

标签: c++ c oracle11g oracle-pro-c embedded-sql

在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类型来尝试更新(如果ename和eno存在),dno更新,如果不存在,那么当然插入进行批量合并而不是尝试一次合并一条记录,e,g,先做一个选择,记录存在,尝试更新,否则应用插入。 请帮助在Pro * C中将批量合并的类似示例和语法作为嵌入式SQL。

1 个答案:

答案 0 :(得分:1)

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

 EXEC SQL
 EXECUTE 
 BEGIN
         MERGE INTO aTable
         USING
         ...
         WHEN MATCHED THEN
             UPDATE SET
         ...
END;
END-EXEC;