Files
e-Book/3.玩轉SQL/參考資料/erp/Day7/參考文檔/薪資-sp/GEX_CALCSALARY_STEP1.txt
T

111 lines
3.2 KiB
Plaintext

CREATE PROC dbo.GEX_CALCSALARY_STEP1
(
@P1 VARCHAR(100),
@P2 VARCHAR(100),
@P3 VARCHAR(100),
@P4 VARCHAR(100),
@P5 VARCHAR(100),
@P6 VARCHAR(100),
@P7 VARCHAR(100),
@P8 VARCHAR(100),
@P9 VARCHAR(100),
@P10 VARCHAR(100),
@P11 VARCHAR(100),
@P12 VARCHAR(100),
@LOGINID VARCHAR(30)
)
/*
Function : 將薪資變數, 執行後填入暫存檔備用 ESS_TMPC1 LOGINID,VARID,PERSONID,RESULT_VALUE
Description: 被主程序 GEX_CALCSALARY 呼叫
Build Date : 2013/05/23
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
*/
AS
--0.預設值整理
IF @P1 = '*' SET @P1 = ''
IF @P2 = '*' SET @P2 = 'zzzzzz'
IF @P3 = '*' SET @P3 = ''
IF @P4 = '*' SET @P4 = 'zzzzzz'
IF @P7 = '*' SET @P7 = dbo.CALC_YEARMONTH(@P5)
IF @P8 = '*' SET @P8 = '0'
--1.整理暫存檔 ESS_TMPC1 LOGINID,VARID,PERSONID,RESULT_VALUE
DECLARE @CNT INT
DECLARE @SQL NVARCHAR(2000)
SELECT @CNT=COUNT(*) FROM SYSOBJECTS WHERE NAME='ESS_TMPC1'
IF @CNT <= 0
BEGIN
SET @SQL = 'CREATE TABLE ESS_TMPC1 ( ' +
' LOGINID VARCHAR(30), ' +
' VARID VARCHAR(30), ' +
' PERSONID VARCHAR(20), ' +
' RESULT_VALUE decimal(18,6) DEFAULT (0) ' +
')'
EXECUTE SP_EXECUTESQL @SQL
END
--計算前先刪除原資料
DELETE FROM ESS_TMPC1 WHERE LOGINID = @LOGINID
--計算薪資變數的值, 並寫到暫存檔
DECLARE @USERDEFID VARCHAR(60)
DECLARE @SQLSTR NVARCHAR(2000)
DECLARE @SQL1 NVARCHAR(2000)
DECLARE contact_cursor2 CURSOR FOR
SELECT USERDEFID,SQLSTR FROM ESSUSERDEF ORDER BY 1
OPEN contact_cursor2
-- Perform the first fetch.
FETCH NEXT FROM contact_cursor2
INTO @USERDEFID,@SQLSTR
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL1=@SQLSTR
--SET @SQL1=REPLACE(@SQL1, '@P10', CHAR(39)+@P10+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P11', CHAR(39)+@P11+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P12', CHAR(39)+@P12+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P1', CHAR(39)+@P1+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P2', CHAR(39)+@P2+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P3', CHAR(39)+@P3+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P4', CHAR(39)+@P4+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P5', CHAR(39)+@P5+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P6', CHAR(39)+@P6+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P7', CHAR(39)+@P7+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@P8', CHAR(39)+@P8+CHAR(39))
--SET @SQL1=REPLACE(@SQL1, '@P9', CHAR(39)+@P9+CHAR(39))
SET @SQL1=REPLACE(@SQL1, '@LOGINID', CHAR(39)+@LOGINID+CHAR(39))
--利用暫存檔轉入
CREATE TABLE #TMP99 (PERSONID varchar(30), CALCDATA DECIMAL(18,6) )
INSERT INTO #TMP99
EXECUTE SP_EXECUTESQL @SQL1
SET @SQL = 'INSERT INTO ESS_TMPC1 (LOGINID,VARID,PERSONID,RESULT_VALUE) ' +
' SELECT ' + CHAR(39)+@LOGINID+CHAR(39) + ',' + CHAR(39)+@USERDEFID+CHAR(39) + ',PERSONID,CALCDATA FROM #TMP99'
EXECUTE SP_EXECUTESQL @SQL
DROP TABLE #TMP99
FETCH NEXT FROM contact_cursor2
INTO @USERDEFID,@SQLSTR
END
--加入防錯
UPDATE ESS_TMPC1 SET RESULT_VALUE = 0 WHERE RESULT_VALUE IS NULL
CLOSE contact_cursor2
DEALLOCATE contact_cursor2