日期:2014-05-17  浏览次数:20510 次

sqlsvser存储过程
前辈们小菜鸟求帮忙
MarketProduct 商品表
其中有个字段叫
kind 1代表百货 2 代表服务

InotoneOrderBillMain 订单表
其中有些字段 (字段比较多 我就不全写)
id 订单编号
ordercode 订单编码
kaishidate 开始时间
jieshudate 时间
randomcode 随机数
等等
这个随机数我需要在数据库里面生成一个6位不重复的随机数
在订单表里面插入数据的时候
我要判断kind 
kind =1 就不需要插入这个随机数
如果kind=2我就要把这个自动生成的随机数插入到randomcode 字段


我需要这样的一个存储过程
希望前辈都来帮忙,菜鸟快哭了
下面代码是我写的一个存储过程但是没有判断和生成随机数的

ALTER PROCEDURE [dbo].[Inotone_Add_InotoneOrderBillSub]
  (
  @RenewalsID VARCHAR(50) ,
  @OrderCode CHAR(20) ,
  @PurchaseDate DATETIME ,
  @ProductCode VARCHAR(50) ,
  @ProductNum INT ,
  @IsTime INT ,
  @kaishiDate DATETIME ,
  @jieshuDate DATETIME ,
  @IsValid INT ,
  @OrderDes VARCHAR(500),
 @RandomCode INT, --生成的随机数
  )
AS 
  BEGIN
  SET NOCOUNT ON  
  INSERT INTO InotoneOrderBillSub
  ( OrderBillSubID ,
  RenewalsID ,
  OrderCode ,
  PurchaseDate ,
  ProductCode ,
  ProductNum ,
  IsTime ,
  kaishiDate ,
  jieshuDate ,
  IsValid ,
  OrderDes
  )
  VALUES ( NEWID() ,
  @RenewalsID ,
  @OrderCode ,
  @PurchaseDate ,
  @ProductCode ,
  @ProductNum ,
  @IsTime ,
  @kaishiDate ,
  @jieshuDate ,
  @IsValid ,
  @OrderDes
  )
   
  IF @@ROWCOUNT > 0 
  BEGIN
  SELECT 1
  END
   
  ELSE 
  BEGIN
  SELECT -1
  END

  SET NOCOUNT OFF
  END



------解决方案--------------------
SQL code

ALTER PROCEDURE [dbo].[Inotone_Add_InotoneOrderBillSub]
  (
  @RenewalsID VARCHAR(50) ,
  @OrderCode CHAR(20) ,
  @PurchaseDate DATETIME ,
  @ProductCode VARCHAR(50) ,
  @ProductNum INT ,
  @IsTime INT ,
  @kaishiDate DATETIME ,
  @jieshuDate DATETIME ,
  @IsValid INT ,
  @OrderDes VARCHAR(500), 
  @kind int --判断类型
   )
AS  
  BEGIN
  SET NOCOUNT ON   
  declare @RandomCode INT --生成的随机数
  set @randomcode=RAND(100)
  if(@kind=1)
    begin
      INSERT INTO InotoneOrderBillSub
  ( OrderBillSubID , RenewalsID , OrderCode , PurchaseDate , ProductCode , ProductNum , IsTime , kaishiDate , jieshuDate , IsValid  OrderDes )
  VALUES ( NEWID() , @RenewalsID , @OrderCode , @PurchaseDate , @ProductCode , @ProductNum , @IsTime , @kaishiDate , @jieshuDate , @IsValid ,
 @OrderDes
  )
    end
  else
    begin
  INSERT INTO InotoneOrderBillSub
  ( OrderBillSubID , RenewalsID , OrderCode , PurchaseDate , ProductCode , ProductNum , IsTime , kaishiDate , jieshuDate , IsValid , OrderDes,randcode
  )
  VALUES ( NEWID() , @RenewalsID , @OrderCode , @PurchaseDate , @ProductCode , @ProductNum , @IsTime , @kaishiDate , @jieshuDate , @IsValid ,
  @OrderDes,@randcode
  )
   end 
  IF @@ROWCOUNT > 0  
  BEGIN
  SELECT 1
  END
    
  ELSE  
  BEGIN
  SELECT -1
  END

  SET NOCOUNT OFF
  END