新手求教。 生成订单时插入数据到订单表(tb_Order)和订单商品表(tb_OrderPro)。
如何使用存储过程实现
     表设计是否合理?一个存储过程的问题,求指教

解决方案 »

  1.   

    先生成编号。insert intoinsert into插入两个表即可。
      

  2.   

    楼主的意义是不是 订单是下单的信息,订单商品是1条或多条商品信息?
    记得放在一个事务里哦begin try
         begin tran
              insert order ...
              insert orderpro
         commit tran
    end try
    begin catch
         rollback tran
         return
    end catch
      

  3.   

    订单商品信息:商品Id,商品名称,商品价格,购买数量|商品Id,商品名称,商品价格,购买数量|.......以 ‘|’隔开商品
    存储过程如何拼 语句 .如何批量执行等。。
      

  4.   

    create proc sp_insertorder
    (
     @SplitString text, -- 你的字符串
     @Separator varchar(2) = '|'-- 分隔符
    )
    as
    begin try
         begin tran
       --         DECLARE @SplitString text -- 
    --DECLARE @Separator varchar(2)
    DECLARE @CurrentIndex int;
    DECLARE @NextIndex int;
    DECLARE @ReturnText varchar(8000);-- NVarChar(4000)
    SELECT @CurrentIndex=1; WHILE(@CurrentIndex<=datalength(@SplitString)) -- DATALENGTH(@SplitString)/2
    BEGIN
    SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
    IF(@NextIndex=0 OR @NextIndex IS NULL)
    SELECT @NextIndex=datalength(@SplitString)+1;--DATALENGTH(@SplitString)/2
        
    SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); set @ReturnText =  'select '''+replace(@ReturnText,'-',''',''')+''''
    insert dbo.orderpro
    (
     --......这里的顺序必须与你字符串里给的顺序一致
    )
    exec (@str)
        
    SELECT @CurrentIndex=@NextIndex+1;
    END
         commit tran
    end try
    begin catch
         rollback tran
         return
    end catch
      

  5.   

    注意:  这里应该是这个:exec (@ReturnText)
      

  6.   

    insert dbo.orderpro(orderid,memberid,orderno,productid,norms,price,guige,quantity,state)
    exec (@ReturnText)@SplitString ='1-20-2013032801-1-1-规格1-2-1|2-21-2013032802-2-2-规格1-2-2|3-23-2013032803-3-3-规格3-3-3|'报这个错