SQL Server存储过程中变量使用函数调用变量

USE  DB名称
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

.

 

CREATE   PROCEDURE     存储过程名
 @formID   nvarchar(20) ,                        --传入参数
 @Error      int output

AS

DECLARE             @DayID                    NVARCHAR(10)            --当前日期
 DECLARE            @GLFDayID             NVARCHAR(10)            --費用計算日
 DECLARE            @EmpID                   NVARCHAR(50)            --人员工号
 DECLARE            @TFormDayID          NVARCHAR(10)            --  填单日期 
 DECLARE            @LWorkDay              NVARCHAR(10)            --最后工作日


 BEGIN 

  --给人员工号变量赋值

  SELECT @EmpID=EmpID  FROM    离职表签核总表      WHERE    FormID=@formID       --(传入单号变量)     

 
--新建一个temp表并插入temp表中離職人員所有請的非曠工假與實數

INSERT INTO   temp表   (VocaEmpID,VocaEmpName,VocaDayID,VocaTotalHours,ColType)  

SELECT  VocaEmpID,VocaEmpName,VocaDayID,A.VocaTotalHours,ColType
FROM  请假明细表 A, 离职表签核总表 B
WHERE  A.CurrentStatus='5' AND A.VocaEmpID=B.EmpID AND A.ColType!='C04'  ORDER BY VocaEmpID DESC 

--更新臨時表中的人員责任制类型

UPDATE   temp表   SET  IsDuty=A.IsDuty   

FROM  人员信息表   A,    temp表  B 

WHERE A.EmpID=B.VocaEmpID     

--给变量赋值     [dbo].[RSN_FC_CostDay](EmpID)  为函数方法 

SELECT @DayID=CONVERT(NVARCHAR(10),GETDATE(),111),@EmpID=EmpID  ,@TFormDayID=CONVERT(NVARCHAR(10),ApDate,111) ,@GLFDayID=[dbo].[RSN_FC_CostDay](EmpID)    FROM    离职表签核总表    WHERE FormID=@formID   

 

SELECT @LWorkDay=MAX(VocaDayID)  FROM     请假明细表   WHERE  VocaEmpID=@EmpID AND ColType='C04'  AND CurrentStatus='5'

INSERT INTO    HCB汇总表

(DayID ,

   FormNID ,

   EmpID ,

   TFormDayID ,

   LWorkDay ,

   GLFDayID ,

   IsTB ,

   CUser ,

   CDate ,

   LUser ,

   LDate

VALUES

(@DayID ,

   @formID,

   @EmpID ,

   @TFormDayID ,

   @LWorkDay ,

   @GLFDayID ,

   N'N' ,

   N' ' ,

  GETDATE() ,

   N' '

   GETDATE()

SET @Error= @@ERROR

TRUNCATE   TABLE   temp表

END

 

posted @ 2019-03-02 15:09  韩小花  阅读(5338)  评论(0编辑  收藏  举报