如何更正以下SQL代码,特别是COALESCE部分?
insert into Stmt G (ID,blah,foo)
select
coalesce(SELECT ID FROM Stmt G WHERE G.CLAIMNO=C.CLNUMBER, select StmtSeq.nextval from dual),
c.blah,
d.foo
from claim c
left join d on ...;
Run Code Online (Sandbox Code Playgroud)
如果ClaimNo匹配,我将从Stmt表中获取ID,否则创建一个新ID.SQL中不允许这样做吗?我怎么能写这个陈述?
我现在正在coalesce部分出现"Missing Expression"错误.
我有六行参数,如下所示:
cmd.Parameters.AddWithValue("@variable1", myvalue1);
cmd.Parameters.AddWithValue("@variable2", myvalue2);
cmd.Parameters.AddWithValue("@variable3", myvalue3);
Run Code Online (Sandbox Code Playgroud)
等等.
有没有办法在不直接插入cmd.CommandText的情况下压缩这一点?
编辑:我想我可以使用一个很好的老式阵列.我决定坚持这一点.
我将客户记录插入到表中,如果已存在同名记录,我将为新插入的记录分配相同的ID.
假设表T有此记录:
ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 |04/03/2014
Run Code Online (Sandbox Code Playgroud)
我从表A中插入这个:
Name| Phone_Number
Sam | 333333
Run Code Online (Sandbox Code Playgroud)
插入后,表T应该具有:
ID | Name | Phone_Number | Date_Inserted
105| Sam | 111111 | 04/03/2014
106| Rita | 222222 | 04/03/2014
105| Sam | 333333 | 04/04/2014
Run Code Online (Sandbox Code Playgroud)
没有上述变化,它看起来像:
INSERT INTO T SELECT CustID.nextval,Name,Phone_Number,SYSDATE FROM A;
Run Code Online (Sandbox Code Playgroud)
我在考虑使用,
INSERT INTO T
SELECT CASE
WHEN NOT EXISTS(select null from T WHERE T.Name=A.Name) THEN CustID.nextVal
ELSE (select ID from …Run Code Online (Sandbox Code Playgroud)