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