Hi Suku
The code's fairly long so I've removed the general processing from it (selects, inserts, updates, deletes), is this enough?
CREATE PROCEDURE PROC1 @FileName VARCHAR(300) AS
BEGIN
-- Author : Ed Deane
--Drop the global temp table ##FINANCIAL if it already exists
IF EXISTS (select * from tempdb..sysobjects WHERE name = '##FINANCIAL')
BEGIN
DROP TABLE ##FINANCIAL
END
--Drop the global temp table ##FINANCIAL if it already exists
IF EXISTS (select * from tempdb..sysobjects WHERE name = '##FILE')
BEGIN
DROP TABLE ##FILE
END
CREATE TABLE ##FINANCIAL (
CUSTOMERS1 varchar(50) NULL,
LOANREFNO varchar(50) NULL,
AMOUNT numeric (12,2) NULL,
TRANSACTIONDATE DATETIME NULL,
CURRENCY varchar(50) NULL,
VALUEDATE smalldatetime NULL,
CREDITREASON varchar(50) NULL,
DEBITREASON varchar(50) NULL,
STATUS VARCHAR(10) NULL,
ACCOUNTACTIVITYID VARCHAR(10) NULL,
ACCOUNTID VARCHAR(10) NULL,
BALANCEID VARCHAR(10) NULL,
ACTIVITYID VARCHAR(10) NULL,
EVENTID VARCHAR(10) NULL,
CREDITAMOUNT NUMERIC(12,2) NULL,
DEBITAMOUNT NUMERIC(12,2) NULL,
BALANCE NUMERIC(12,2),
CUSTOMERID NUMERIC(10,0),
NARRATIVE VARCHAR(50)
)
CREATE INDEX ixAcct On ##Financial (AccountID)
CREATE INDEX ixAcctActivity On ##Financial (AccountActivityID)
CREATE INDEX ixBalance On ##Financial (BalanceID)
Create Index ixCust On ##Financial (CustomerID)
CREATE TABLE ##FILE (
RECORD VARCHAR(200)
)
DECLARE C_FILE CURSOR FOR
SELECT RECORD
FROM ##FILE
--GET HEADER INFO
SET @Commandline = 'BCP tempdb.##FILE IN "'+@IntRootDirectory+'\fin
EXEC @error=MASTER.DBO.XP_CMDSH
IF @Error <> 0
BEGIN
SET @ERRORTEXT = 'Error in importing file: '+@Commandline
GOTO ERR_HANDLER
END
/*************************
--Selects, inserts, updates and deletes removed
**************************
SET @v_errorcount = 0
OPEN C_FILE
--- GET HEADER INFORMATION
FETCH NEXT FROM C_FILE INTO @V_RECORD
SET @V_FIRSTCOMMA = CHARINDEX(',',@V_RECORD,1)
SET @V_SECONDCOMMA = CHARINDEX(',',@V_RECORD,@V
SET @V_THIRDCOMMA = CHARINDEX(',',@V_RECORD,@V
SET @V_HEADERNOOFRECORDS = CAST((SUBSTRING(@V_RECORD,
SET @V_HEADERTOTALCREDITS = CAST((SUBSTRING(@V_RECORD,
SET @V_HEADERTOTALDEBITS = CAST((SUBSTRING(@V_RECORD,
--- GET FIRST RECORD FROM CURSOR
FETCH NEXT FROM C_FILE INTO @V_RECORD
WHILE (@@FETCH_STATUS <> -1)
BEGIN
BEGIN TRANSACTION
INSERT INTO ##FINANCIAL(--for each record)
/*************************
--Selects, inserts, updates and deletes removed
**************************
COMMIT TRANSACTION
FETCH NEXT FROM C_FILE INTO @V_RECORD
END
IF @Error <> 0
BEGIN
SET @ERRORTEXT = 'Error sorting the financial file'
GOTO ERR_HANDLER
END
CLOSE C_FILE
DEALLOCATE C_FILE
-- CREATE CURSOR FOR LOOP A (SELECT ALL NEW RECORDS APART FROM HEADER RECORD)
DECLARE C_FINANCIAL CURSOR FOR
SELECT ACCOUNTID,AMOUNT,TRANSACTI
VALUEDATE,CURRENCY,CREDITR
DEBITREASON,STATUS, ACCOUNTACTIVITYID
FROM ##FINANCIAL
ORDER BY ACCOUNTACTIVITYID
OPEN C_FINANCIAL
FETCH NEXT FROM C_FINANCIAL INTO @V_ACCOUNTID,@V_AMOUNT,@V_
@V_CREDITREASON,@V_DEBITRE
WHILE (@@FETCH_STATUS <> -1)
--Loop through and process all transactions individually
/*************************
--Selects, inserts, updates and deletes removed
**************************
FETCH NEXT FROM C_FINANCIAL INTO @V_ACCOUNTID,@V_AMOUNT,@V_
@V_CREDITREASON,@V_DEBITRE
END
CLOSE C_FINANCIAL
DEALLOCATE C_FINANCIAL
ALTER TABLE ACCOUNTACTIVITIES DISABLE TRIGGER ACCOUNTACTIVITY_UPDATE
ALTER TABLE BALANCES DISABLE TRIGGER BALANCE_UPDATE
/*************************
--Selects, inserts, updates and deletes removed
**************************
DROP TABLE ##FINANCIAL
DROP TABLE ##FILE
ALTER TABLE ACCOUNTACTIVITIES ENABLE TRIGGER ACCOUNTACTIVITY_UPDATE
ALTER TABLE BALANCES ENABLE TRIGGER BALANCE_UPDATE
SET @TEXT = CAST(GETDATE() AS VARCHAR(20))+': Procedure PROC1 completed successfully'
EXEC DBO.LOGTEXT @TEXT
Return(0)
ERR_HANDLER:
IF (@ERRORTEXT != '')
/*************************
--Selects, inserts, updates and deletes removed
**************************
ALTER TABLE ACCOUNTACTIVITIES ENABLE TRIGGER ACCOUNTACTIVITY_UPDATE
ALTER TABLE BALANCES ENABLE TRIGGER BALANCE_UPDATE
END -- Error Handler
END
Ed
Main Topics
Browse All Topics





by: sukumar_diyaPosted on 2004-11-17 at 02:56:41ID: 12602805
Hi,
Are you changing the columns list in the table after cursor declaration. Is it possible to post the script here.
It will be helpful for the experts here to find a solution ...
Suku