合并语句抛出:
<块引用>“无法识别布尔值”
我正在从流中读取所有 varchar 值并写入主表。我在源表或目标表中没有任何布尔值。无法找出我收到的原因:“无法识别布尔值”错误。”
create table "EMP_TEST" (EMPID integer, EMPNAME VARCHAR(500), EMPADD VARCHAR(500), EMPSALARY INTEGER);
create table "EMP_TEST_MAIN" (EMPID integer, EMPNAME VARCHAR(500), EMPADD VARCHAR(500), EMPSALARY INTEGER);
create or replace stream ST_EMP_TEST on table "EMP_TEST";
insert into "EMP_TEST"
select 1, 'AAA','PLACE 1', 100 UNION
select 2, 'BBB','PLACE 2', 200 UNION
select 3, 'CCC','PLACE 3', 300;
MERGE INTO "EMP_TEST_MAIN" AS T USING (select * from ST_EMP_TEST where NOT (METADATA$ACTION ='DELETE' AND METADATA$ISUPDATE = TRUE)) AS S ON T.EMPID = S.EMPID WHEN MATCHED AND S.METADATA$ACTION = 'INSERT' AND S.METADATA$ISUPDATE THEN UPDATE SET T.EMPNAME = S.EMPNAME AND T.EMPADD = S.EMPADD AND T.EMPSALARY = S.EMPSALARY WHEN MATCHED AND S.METADATA$ACTION = 'DELETE' THEN
DELETE WHEN NOT MATCHED AND S.METADATA$ACTION = 'INSERT' THEN
INSERT (T.EMPID, T.EMPNAME, T.EMPADD, T.EMPSALARY) VALUES (S.EMPID, S.EMPNAME, S.EMPADD, S.EMPSALARY);
答案 0 :(得分:1)
UPDATE 部分的列用 AND
分隔:
WHEN MATCHED AND S.METADATA$ACTION = 'INSERT' AND S.METADATA$ISUPDATE
THEN UPDATE SET T.EMPNAME = S.EMPNAME
AND T.EMPADD = S.EMPADD
AND T.EMPSALARY = S.EMPSALARY
-- AND is incorrect in this context
应该是,
:
WHEN MATCHED AND S.METADATA$ACTION = 'INSERT' AND S.METADATA$ISUPDATE
THEN UPDATE SET T.EMPNAME = S.EMPNAME
,T.EMPADD = S.EMPADD
,T.EMPSALARY = S.EMPSALARY