1

我需要在 DB2 中有条件地执行语句。我搜索了 DB2 文档,尽管if..then..elseif可以达到目的。但是如果没有程序,我不能使用吗?

我的 DB2 版本是 9.7.6。

我的要求是我有一个表说组(名称,gp_id)。我还有另一个表 Group_attr(gp_id,value,elem_id)。我们现在可以忽略需求的 elem_id 了。

-> 我需要检查组是否有特定名称。

-> 如果它没有什么可做的。

-> 如果没有,我需要将其添加到组中。然后我需要在 Group_attr 中插入相应的行。假设 value 和 elem_id 是静态的。

4

2 回答 2

1

您可以为 PL/SQL 使用匿名块或为 SQL PL 代码使用复合语句。

BEGIN ATOMIC
   FOR ROW AS
     SELECT PK, C1, DISCRETIZE(C1) AS D FROM SOURCE
   DO
     IF ROW.D IS NULL THEN
       INSERT INTO EXCEPT VALUES(ROW.PK, ROW.C1);
     ELSE
       INSERT INTO TARGET VALUES(ROW.PK, ROW.D);
     END IF;
   END FOR;
 END

复合语句:

匿名块:

许多其他功能来自 9.7 版

于 2013-09-20T15:45:24.613 回答
0

我得到了条件插入的解决方案。对于我提到的场景,解决方案可以是这样的。

Insert into Group(name) select 'Name1' from sysibm.sysdummy1 where (select count(*) from Group where name='Name1')=0

Insert into Group_attr(gp_id,value,elem_id) select g.gp_id,'value1','elem1' Group g,group_attr ga where ga.gp_id=g.gp_id and (select count(*) from Group_attr Ga1 where Ga.gp_id=g.gp_id)=0
-- In my case Group_attr will contain some data for sure if the group has exists already
于 2013-09-25T12:05:33.780 回答