SqlServer存储过程

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Inser_Tare]
	@Carno nvarchar(50),--车号
    @Proname nvarchar(50),--货物名称
    @Unitfrom nvarchar(50),--销售公司
    @Unitto nvarchar(50),--客户名称
    @Transport nvarchar(50),--运输单位
    @Model nvarchar(50),--订单号
    @YLstr02 nvarchar(50),--联系电话
    @YlStr04 nvarchar(50),--身份证号
    @Taretime nvarchar(50),--添加时间
    @YLFlt01 float,--预装量
    @rtn int output
AS
BEGIN
       if exists(select * from T_Tare where F_Carno=@Carno)
    begin
       set @rtn=0   --有相同的数据,直接返回值
    end
    else
    begin
      insert into T_Tare (F_Type,F_CarNo,F_Proname,F_Unitfrom,F_Unitto,F_Transport,F_Model,F_YLstr02,F_YLStr04,F_Taretime,F_YLFlt01) 
          values('销售',@Carno,@Proname,@Unitfrom,@Unitto,@Transport,@Model,@Ylstr02,@Ylstr04,@taretime,@YLFlt01)
      set @rtn=1    --没有相同的数据,进行插入处理
    end 
end

调用

declare  @back varchar(100) 
exec dbo.Inser_Tare '123','123','123','123','123','123','123','123','123','123',@back output    --传入@back的引用,在过程中为其赋值,这就是输出参数的作用
select @back rtn     --查询显示并起别名
ALTER PROCEDURE [dbo].[Inser_Order]
  @trans_number nvarchar(50),--提货单编码
  @status nvarchar(50),--提货单状态
  @customer_name nvarchar(50),--客户名称。格式为:客户名+H或W或X后缀
  @product_id int,--产品id
  @product_name nvarchar(50),--产品名称
  @guanhao nvarchar(50),--罐号
  @factory_code nvarchar(50),--厂区编码
  @factory_name nvarchar(50),--厂区名称(目前万通只有南厂、北厂)
  @plate_number nvarchar(50),--车牌号
  @pack_quantity nvarchar(50),--预装数量
  @unit_price nvarchar(50),--产品当日挂牌价
  @execution_price nvarchar(50),--执行价格
  @contract_no nvarchar(50),--合同号
  @contract_last_car nvarchar(50),--是否合同最后一车(是 、 否)
  @contract_price nvarchar(50),--是合同最后一车,则:传参合同价格
  @contract_part_qty nvarchar(50),--是合同最后一车,则:传参预装合同量(合同量+零散量 = 预装数量)
  @scatter_part_qty nvarchar(50),--是合同最后一车,则:传参预装零散量(合同量+零散量 = 预装数量)
  @ret_code nvarchar(50) output,
  @ret_msg nvarchar(50) output
AS
BEGIN
  declare @optime nvarchar(20),@optime2 nvarchar(20),@stdno nvarchar(20),@stat int;
  select @optime=CONVERT (nvarchar(12),GETDATE(),120)
  declare @errors int        --错误数
  if @status='PRINTED'
  begin
    if exists(select * from T_SaleOrder where F_Billno=@trans_number)
    begin
       set @ret_code='#'   --有相同的数据,直接返回值
       set @ret_msg='提单号已存在!'
    end
    else
    begin
      begin tran
      insert into T_SaleOrder (F_BillNO,F_UnitTo,F_HeTongNO,F_Proname,F_ordername,F_orderprice,F_Qty,F_Price,
            F_opman,F_time,F_Edtman,F_edttime,F_isclosed,F_ischeck,F_isfinish,F_cmesg,F_guanhao,F_youhui,F_memo,
            F_istata,F_money,F_zmoney,F_ishetong,F_faccode,F_facname,F_islastcar,F_conprice,F_conqty,F_scaqty) 
         values(@trans_number,@customer_name,'',@product_name,'',@unit_price,@pack_quantity,@execution_price,
            '外部导入',@optime,'','',0,1,0,'',@guanhao,0,'',0,0,0,0,
            @factory_code,@factory_name,@contract_last_car,@contract_price,@contract_part_qty,@scatter_part_qty)
      set @errors=@errors+@@error

      insert into T_Tare (F_Type,F_CarNo,F_Proname,F_Unitfrom,F_Unitto,F_Transport,F_Model,F_Unload,F_YLstr02,F_YLStr04,F_Taretime,F_YLFlt01) 
          values('销售',@plate_number,@product_name,@factory_name,@customer_name,'',@trans_number,@guanhao,'','',@optime,@pack_quantity)
      set @errors=@errors+@@error

-- 新增 开始
      insert into T_Weight (F_Type,F_CarNo,F_Proname,F_Unitfrom,F_Unitto,F_Transport,F_Model,F_Unload,F_YLstr02,F_YLStr04,F_Taretime,F_YLFlt01) 
          values('销售',@plate_number,@product_name,@factory_name,@customer_name,'',@trans_number,@guanhao,'','',@optime,@pack_quantity)
        set @ret_msg=@@IDENTITY 
				set @errors=@errors+@@error
-- 新增 结束

      if (@errors<>0)
      begin
         rollback  transaction 
         set @ret_code='E'   
         set @ret_msg='保存失败!'
      end
      else
      begin
         commit transaction 
         set @ret_code='S'   
        -- set @ret_msg=''  --临时注掉
      end
    end
  end
  else
  if @status='DELETED'
  begin
     select @stat= F_YLInt04 from T_Tare where F_Carno='@plate_number'
     if @stat<3
     begin
     begin tran
      Delete From T_SaleOrder Where F_BillNO='@trans_number'
      set @errors=@errors+@@error
      Delete From T_Tare Where F_Carno='@plate_number'
      set @errors=@errors+@@error
      if (@errors<>0)
      begin
         rollback  transaction 
         set @ret_code='E'   
         set @ret_msg='删除失败!'
      end
      else
      begin
         commit transaction 
         set @ret_code='S'   
         set @ret_msg=''
      end
     end
     else
     begin
        set @ret_code='E'   
        set @ret_msg='已过磅,不能操作'
     end
  end 
END

触发器


    Create Trigger s2w
      On dbo.T_Standard                        --T_Standard表中创建触发器
      for Update                         --为什么事件触发
    As                                       --事件触发后所要做的事情
      if Update(F_YLInt04)           
      begin

        Update BorrowRecord 
          Set StudentID=i.StudentID
          From BorrowRecord br , Deleted  d ,Inserted i     --Deleted和Inserted临时表
          Where br.StudentID=d.StudentID

      end   
上一篇:springboot博客系统-图片-相册-文字-友情连接-评论-javaweb-springmvc-ssm


下一篇:.Net 5 DependencyInjection 依赖注入