111 lines
3.2 KiB
Plaintext
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
|