日期:2014-05-20  浏览次数:20785 次

求救啊,SQL
有两个表
 A表 : id date_ip pcode 
  n1 20000000 JTF2011
  n2 45500000 jtf1222  
 B表 : id pid data_ip pcodeNo
  200 n1  
  201 n1  
  202 n1  
  203 n1
  ... ...
  tf0 n2
  tf1 n2
  ... ...
 B表通过pid外键关联A表

 我现在通过id 拿到了 data_ip ,和pcode
 要求给B表同个pid 的记录按id的顺序赋予 pcodeNo=(pcode-流水号)
 我原来这样写:结果是同个Pid 的pcodeNO都是一样的值
 现在不知咋弄,求指教~~~~~~
 
 
SQL code

                    sql= " set nocount on "+
                       " declare  @maxno varchar(10 )" +
                       " exec GetSequence_bs 'B',6, @maxid out "+
                       " exec GetSequence_bs B_"+ PID +"',2, @maxno out set "+
                       "update B set data_ip='"+data_ip+"',pcodeNo='"+pcode+"-'+@maxno,"+
                       "sendstate=1 where pid='"+id+"'";



------解决方案--------------------
存储过程

Python code

BEGIN
FOR c IN
    ( select 你的语句)
LOOP
    UPDATE table1
    SET 你的字段=c.rn
    WHERE 条件;
END LOOP;
COMMIT;
END;

------解决方案--------------------
BEGIN
FOR c IN
( select 
count(pcodeNo) as cnt
,pid 
from B 
where 条件
group by 
pid
order by 
id )
LOOP
FOR j IN C.cnt LOOP
UPDATE B
SET pcodeNo=j
WHERE 条件;
END LOOP;

END LOOP;
COMMIT;
END;
具体PLSQL语法可能还要自己在调试