我有两个表,一个是订单表,一个是订单明细表,表结构如下:
订单表(Oid,Rid,TotalPrice,OStatus,Date,MethodOfDeliver,MethodOfPay),Oid为订单编号,主键,自动增长;Rid为读者id号;TotalPrice为此订单需要付的总金额,OStatus代表订单的状态,有未处理和已处理两种。MethodOfDeliver为送货方式,MethodOfPay为付款方式,都是int型订单明细表(Oid,Bid,Quantity),其中订单明细表的Oid(订单ID)和Bid(书ID)为组合主键,Quantity为购买该书的数量。我是想写一个存储过程,能插入一条记录到定单表的同时,能插入订单明细表。问题是每次订单的订单条目的数量是不同的,我怎么循环把这些订单明细插入到明细表里面呢?这就意味着订单条目里面的书的id和购买数量Quantity只能动态地定义啊,也就是说除非sql支持数组变量,写存储过程的时候把书的id和购买数量Quantity都定义成数组,那问题就好解决一些。
高手们是不是还有别的思路呢,我初学不太懂的,请大家都来帮我想想办法,小弟真是万分感谢啊!!!!
订单表(Oid,Rid,TotalPrice,OStatus,Date,MethodOfDeliver,MethodOfPay),Oid为订单编号,主键,自动增长;Rid为读者id号;TotalPrice为此订单需要付的总金额,OStatus代表订单的状态,有未处理和已处理两种。MethodOfDeliver为送货方式,MethodOfPay为付款方式,都是int型订单明细表(Oid,Bid,Quantity),其中订单明细表的Oid(订单ID)和Bid(书ID)为组合主键,Quantity为购买该书的数量。我是想写一个存储过程,能插入一条记录到定单表的同时,能插入订单明细表。问题是每次订单的订单条目的数量是不同的,我怎么循环把这些订单明细插入到明细表里面呢?这就意味着订单条目里面的书的id和购买数量Quantity只能动态地定义啊,也就是说除非sql支持数组变量,写存储过程的时候把书的id和购买数量Quantity都定义成数组,那问题就好解决一些。
高手们是不是还有别的思路呢,我初学不太懂的,请大家都来帮我想想办法,小弟真是万分感谢啊!!!!
1001|A001|NUM1#1001|A002|NUM2#
然後到存儲過程中循環解析此字符串 WHILE V_LENGTH>0 DO
SET V_POS = POSSTR(V_TEMP,'#');
SET V_CURRENT= SUBSTR( V_TEMP, 1, V_POS-1 );
SET V_TEMP = SUBSTR( V_TEMP, V_POS+1 );
SET V_LENGTH = LENGTH(V_TEMP);
SET V_POS = POSSTR(V_CURRENT,'|');
SET V_OID= SUBSTR( V_CURRENT, 1, V_POS-1 );
SET V_CURRENT= SUBSTR( V_CURRENT, V_POS+1 );
SET V_POS = POSSTR(V_CURRENT,'|');
SET V_BID= SUBSTR( V_CURRENT, 1, V_POS-1 );
SET V_CURRENT= SUBSTR( V_CURRENT, V_POS+1 );
--最后一个字段,不再截取
SET V_NUM = V_CURRENT;
insert into 订单明细表("V_OID","V_BID","V_NUM ");
END WHILE;
把商品ID保存成 xx1|xx2|xx3 这样的先插入订单表,获得订单ID
然后插入订单明细表,利用游标来做吧。没有仔细研究过,大概就是这样的思路吧