I'm new to creating stored procedure and in need of help. I have the following code so far, but, need additional data. In the FILE HEADER RECORD, I need to count the number of detail records and put it in the place of the 9 zeros. I then need to create a trailer record that would count the header record + # of detail records plus the trailer record(or just count the detail records and add 2) then I need the sum of the tblIncentives.Amount field for all the detail records.
Thanks for your help and time in advance, it's greatly appreicated!
CREATE PROCEDURE hht_dellincentiveexport
as
--VARIABLES FOR COUNTER
DROP TABLE ##DELLINCENTIVE
DECLARE @RecCnt AS TINYINT
SET @RecCnt = 0
--CREATE TEMPORARY TABLE
CREATE TABLE[##DELLINCENTIVE](
[Record] CHAR(46) DEFAULT
('9999999999999999999999999999999999999999999999999')
)
--INSERT FILE HEADER RECORD
INSERT INTO [##DELLINCENTIVE]
VALUES ('01'+ convert(char(10), getdate(), 112)+ 'HEWITTDELL000000000')
GO
--INSERT EMPLOYEE DETAIL RECORD
DECLARE @RECORD_TYPE CHAR(2)
DECLARE @EMPLOYEE_SSN CHAR(9)
DECLARE @CREDIT_AMOUNT CHAR(19)
DECLARE @EFFECTIVE_DOC CHAR(8)
DECLARE @EMPLOYEE_ID CHAR(8)
DECLARE @DETAIL_COUNT CHAR(9)
DECLARE [EMPLOYEE DETAIL RECORD] CURSOR FOR
SELECT '02',
dbo.tblNames.SSN,
(SUM(dbo.tblIncentives.Amount)*100),
convert(char(10), getdate(), 112),
dbo.tblSupplemental.FldValue,
COUNT(dbo.tblNames.SSN)
FROM dbo.tblIncentives INNER JOIN
dbo.tblNames ON
dbo.tblIncentives.PIN = dbo.tblNames.PIN INNER JOIN
dbo.tblSupplemental ON
dbo.tblNames.PIN = dbo.tblSupplemental.PIN
WHERE
(dbo.tblSupplemental.SupportID = 152)
and
(dbo.tblincentives.ymdcreate > '8/01/2005') -- THIS CHANGES BI-MONTHLY
and
(dbo.tblIncentives.ClientIncentiveID IN (5, 6, 7, 8, 9, 10, 11,13, 14, 15))
GROUP BY dbo.tblNames.SSN, dbo.tblSupplemental.FldValue
OPEN [EMPLOYEE DETAIL RECORD]
FETCH NEXT FROM [EMPLOYEE DETAIL RECORD]
INTO @RECORD_TYPE, @EMPLOYEE_SSN, @CREDIT_AMOUNT, @EFFECTIVE_DOC, @EMPLOYEE_ID
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO [##DELLINCENTIVE]
VALUES (@RECORD_TYPE + @EMPLOYEE_SSN + @CREDIT_AMOUNT + @EFFECTIVE_DOC + @EMPLOYEE_ID)
FETCH NEXT FROM [EMPLOYEE DETAIL RECORD]
INTO @RECORD_TYPE, @EMPLOYEE_SSN, @CREDIT_AMOUNT, @EFFECTIVE_DOC, @EMPLOYEE_ID
END
CLOSE [EMPLOYEE DETAIL RECORD]
DEALLOCATE [EMPLOYEE DETAIL RECORD]
GO
Thanks for your help and time in advance, it's greatly appreicated!
CREATE PROCEDURE hht_dellincentiveexport
as
--VARIABLES FOR COUNTER
DROP TABLE ##DELLINCENTIVE
DECLARE @RecCnt AS TINYINT
SET @RecCnt = 0
--CREATE TEMPORARY TABLE
CREATE TABLE[##DELLINCENTIVE](
[Record] CHAR(46) DEFAULT
('9999999999999999999999999999999999999999999999999')
)
--INSERT FILE HEADER RECORD
INSERT INTO [##DELLINCENTIVE]
VALUES ('01'+ convert(char(10), getdate(), 112)+ 'HEWITTDELL000000000')
GO
--INSERT EMPLOYEE DETAIL RECORD
DECLARE @RECORD_TYPE CHAR(2)
DECLARE @EMPLOYEE_SSN CHAR(9)
DECLARE @CREDIT_AMOUNT CHAR(19)
DECLARE @EFFECTIVE_DOC CHAR(8)
DECLARE @EMPLOYEE_ID CHAR(8)
DECLARE @DETAIL_COUNT CHAR(9)
DECLARE [EMPLOYEE DETAIL RECORD] CURSOR FOR
SELECT '02',
dbo.tblNames.SSN,
(SUM(dbo.tblIncentives.Amount)*100),
convert(char(10), getdate(), 112),
dbo.tblSupplemental.FldValue,
COUNT(dbo.tblNames.SSN)
FROM dbo.tblIncentives INNER JOIN
dbo.tblNames ON
dbo.tblIncentives.PIN = dbo.tblNames.PIN INNER JOIN
dbo.tblSupplemental ON
dbo.tblNames.PIN = dbo.tblSupplemental.PIN
WHERE
(dbo.tblSupplemental.SupportID = 152)
and
(dbo.tblincentives.ymdcreate > '8/01/2005') -- THIS CHANGES BI-MONTHLY
and
(dbo.tblIncentives.ClientIncentiveID IN (5, 6, 7, 8, 9, 10, 11,13, 14, 15))
GROUP BY dbo.tblNames.SSN, dbo.tblSupplemental.FldValue
OPEN [EMPLOYEE DETAIL RECORD]
FETCH NEXT FROM [EMPLOYEE DETAIL RECORD]
INTO @RECORD_TYPE, @EMPLOYEE_SSN, @CREDIT_AMOUNT, @EFFECTIVE_DOC, @EMPLOYEE_ID
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO [##DELLINCENTIVE]
VALUES (@RECORD_TYPE + @EMPLOYEE_SSN + @CREDIT_AMOUNT + @EFFECTIVE_DOC + @EMPLOYEE_ID)
FETCH NEXT FROM [EMPLOYEE DETAIL RECORD]
INTO @RECORD_TYPE, @EMPLOYEE_SSN, @CREDIT_AMOUNT, @EFFECTIVE_DOC, @EMPLOYEE_ID
END
CLOSE [EMPLOYEE DETAIL RECORD]
DEALLOCATE [EMPLOYEE DETAIL RECORD]
GO