DB2 Merge SQL iSeries

Я создал эту функцию для обновления или вставки строки, основываясь на том, существует ли строка или нет; ошибка, которую я получаю, VAR1 не является переменной. Я впервые настраиваю слияние таким образом на iSeries и DB2. Надеюсь, что кто-то может помочь, благодаря всему, что занимает время, чтобы сделать это.

function mergeRecord($var1, $var2, $var3, $var4, $var5, $var6){

db2RunSql("MERGE INTO schema.tableName AR
USING (VALUES (:var1, :var2, var3, :var4, :var5, :var6)
FOR :var1 ROWS)
AS AC (VAR1, VAR2, VAR3, VAR4, VAR5, VAR6)
ON (AR.VAR1 = AC.VAR1 AND AR.VAR4 = AC.VAR4 AND AR.VAR6 = AC.VAR6)
WHEN MATCHED THEN UPDATE SET VAR1=?, VAR2=?, VAR3=?, VAR4=?, VAR5=?, VAR6=?
WHEN NOT MATCHED THEN INSERT (:var1, :var2, :var3, :var4, :var5, :var6)
VALUES (?, ?, ?, ?, ?, ?)",
array($var1, $var2, $var3, $var4, $var5, $var6)
);
}

-3

Решение

Может быть, вы ищете что-то вроде этого:

function mergeRecord($var1, $var2, $var3, $var4, $var5, $var6){

db2RunSql("MERGE INTO schema.tableName AR
USING (VALUES (?, ?, ?, ?, ?, ?))
AS AC (VAR1, VAR2, VAR3, VAR4, VAR5, VAR6)
ON (ar.var1, ar.var4, ar.var6) = (ac.var1, ac.var4, ac.var6)
WHEN MATCHED THEN
UPDATE SET (ar.var2, ar.var3, ar.var5) = (ac.var2, ac.var2, ac.var5)
WHEN NOT MATCHED THEN
INSERT VALUES (ac.var1, ac.var2, ac.var3, ac.var4, ac.var5, ac.var6)",
array($var1, $var2, $var3, $var4, $var5, $var6)
);
}

Я думаю, что вы пытаетесь вставить слишком много маркеров параметров в своем примере, когда вы можете просто использовать столбцы в исходной таблице (USING) в качестве значений обновления или вставки.

НОТА: Это всего лишь предположение, так как я не уверен, что db2RunSql() делает. Это не стандартная функция, и вы не предоставили ее определение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]