A.个人编号=Input.个人编号
A.地址编号=Input.旧地址编号B.个人编号=A.个人编号
B.小组编号=A.小组编号
B.小组内编号=A.小组内编号C.个人编号=B.个人编号
C.年度=B.年度
C.管理编号=B.管理编号
C.地址编号=Input.旧地址编号更新值:C.地址编号=Input.新地址编号
DB环境为Oracle,请大家帮帮忙。

解决方案 »

  1.   

    不用存储过程,直接更新语句就OK!给些数据,我来TRY!
      

  2.   

    UPDATE C
       SET 地址编号 = (SELECT INPUT.新地址编号
                     FROM INPUT, A, B, C
                    WHERE A.个人编号 = INPUT.个人编号
                      AND B.个人编号 = A.个人编号
                      AND C.个人编号 = B.个人编号)
     WHERE EXISTS (SELECT NULL
              FROM INPUT, A, B, C
             WHERE A.个人编号 = INPUT.个人编号
               AND B.个人编号 = A.个人编号
               AND C.个人编号 = B.个人编号);
      

  3.   

    谢谢ls的,不过您可能理解错了。INPUT不是表名,是用户输入的值。
      

  4.   


    UPDATE C
       SET 地址编号 = INPUT.新地址编号
    WHERE C.个人编号 = INPUT.个人编号;
      

  5.   

    Input.个人编号 = 0001
    Input.旧地址编号 = 12345
    INPUT.新地址编号 = 54321A
    个人编号 地址编号 小组编号 小组内编号
    0001 12345 101     01B
    个人编号 小组编号 小组内编号 年度    管理编号 
    0001 101     01        2007   200701C
    个人编号 年度  管理编号  地址编号
    0001    2007  200701  12345
    0002    2007  200701  12345
    0001    2008  200701  12345
    0001    2007  200702  12345
    0001    2007  200701  22222更新后:
    C
    个人编号 年度  管理编号  地址编号
    0001    2007  200701  54321  (被更新)
    0002    2007  200701  12345
    0001    2008  200701  12345
    0001    2007  200702  12345
    0001    2007  200701  22222
      

  6.   

    UPDATE C
       SET 地址编号 = INPUT.新地址编号
     WHERE EXISTS (SELECT NULL
              FROM A, B, C
             WHERE A.个人编号 = INPUT.个人编号
               AND B.个人编号 = A.个人编号
               AND C.个人编号 = B.个人编号
               AND C.管理编号 = B.管理编号
               AND C.年度 = B.年度);