需要帮助理解和INSERT / UPDATE过程

时间:2011-09-27 13:10:47

标签: sql stored-procedures plsql

我有一个INSERT / UPDATE过程,当我更改现有的“名称”时,它似乎只会更新。

我在java中添加了一个代码字段,并且想要将代码更新到现有表而不必修改“name”,因为它已经存在。如果我修改“名称”,那么“代码”将更新到表中的那一行。

有人可以帮助我了解最新情况或需要修改的内容吗?

感谢

PROCEDURE update_things
  (things IN OUT things_bean, user_id IN NUMBER)
IS
  t_things   things_bean;
BEGIN
  -- If there is already an id set ... this is an update
  IF things.ID <> 0
  THEN
     SELECT things_bean (ID, NAME, code, work, foo)
       INTO t_things
       FROM things
      WHERE things.ID = ID;


     IF NOT things.equals (t_things)
     THEN

        things.foo:= t_things.foo;

        things.foo.modified_date := SYSDATE;
        things.foo.modified_by := user_id;

        UPDATE things
           SET NAME = things.NAME,
                              code = things.code,
               foo= things.foo
         WHERE ID = things.ID;
 END IF;                                                                                           


END update_things;

1 个答案:

答案 0 :(得分:1)

我觉得你应该看看这个电话:

things.equals(t_things)

确保您的代码值是等式检查的一部分。