Используя Oracle Pro * C в C / 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);
Могу ли я сделать MERGE, используя EXEC SQL MERGE
вид сначала попробовать обновить (если ename и eno существуют) с обновлением dno, если не существует, то, конечно, вставьте, чтобы выполнить массовое объединение вместо попытки объединить одну запись за раз, например, сделать выбор сначала запись существует, попробуйте обновить, иначе примените вставку.
Пожалуйста, помогите с подобным примером и синтаксисом для массового слияния, как встроенный SQL в Pro * C.
Я смотрю на Pro * C код, который использует команду слияния. Это делает следующее.
EXEC SQL
EXECUTE
BEGIN
MERGE INTO aTable
USING
...
WHEN MATCHED THEN
UPDATE SET
...
END;
END-EXEC;
Других решений пока нет …