Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 Row fetch w/o cursor

Author  Topic 

nvakeel
Yak Posting Veteran

52 Posts

Posted - 2008-02-04 : 15:38:49
I have a SP which uses this cursor. The table has more than 2 lakh rows. Using cursors is a bad option as far I know. can you help me


DECLARE CR1 CURSOR FOR
SELECT JOB_INST_ID , ADV_NUM , SORT_CODE , SYS ,
LOC , num , F_NAME , LNAME ,
INIT , MISC_ADD , ADDRESSX , CTY_ST ,
ZIPCD , TMP_PRNJ250M2_ADV_TRAN_ID
FROM MPAS_TMP.DBO.TMP_PRNJ250M_ADV_INTRAN
WHERE JOB_INST_ID = @JOB_INST_ID

OPEN CR1

FETCH NEXT FROM CR1 INTO @JOB_INST_ID , @ADV_NUM , @SORT_CODE ,
@SYS , @LOC , @num ,
@F_NAME , @LNAME , @INIT ,
@MISC_ADD , @ADDRESSX , @CTY_ST ,
@ZIPCD , @INTRAN_ID

WHILE( @@FETCH_STATUS =0)
BEGIN------------------CURSOR



-------SET THE VALUE OF TMP_ADV_NUM----------------
SET @TMP_ADV_NUM = @ADV_NUM

----------SETTING THE VALUES OF TMP_TOT_ADVS AND TOT_ADVS------
print 'INSIDE CORSOR TEMP ADV NUM ' + @TMP_ADV_NUM + ' , NUM : ' + @num

IF ((upper(@CODEX)!='R' )OR
(upper(@CODEX) ='R' AND CONVERT(INT,@RES_ADV_NUM) < CONVERT(INT,@TMP_ADV_NUM)) OR
(upper(@CODEX) ='R' AND CONVERT(INT,@END_ADV_NUM) > CONVERT(INT,@TMP_ADV_NUM)) )
BEGIN

if LTRIM(RTRIM(@SORT_CODE)) NOT IN ('07','08','7','8')
begin

SET @TMP_TOT_ADVS = CONVERT(BIGINT,@TMP_TOT_ADVS) + 1
SET @TMP_END_ADV_NUM = @TMP_END_ADV_NUM + 1
end


END
ELSE IF(upper(@CODEX)='R')
BEGIN --------------------7

SET @TMP_TOT_ADVS = CONVERT(BIGINT,@TMP_TOT_ADVS) + 1

IF LTRIM(RTRIM(@SORT_CODE)) NOT IN ('07','08','7','8')
BEGIN
SET @TMP_TOT_ADVS = CONVERT(BIGINT,@TMP_TOT_ADVS) + 1
SET @TMP_END_ADV_NUM = @TMP_END_ADV_NUM + 1
END

END --------------------7
-----------UPDATE THE VALUE OF NEW_ADV_NUM IN TMP_PRNJ250M_ADV_INTRAN ---------
---creating index on 'TMP_PRNJ250M_ADV_INTRAN' table changed by Diya

UPDATE MPAS_TMP.DBO.TMP_PRNJ250M_ADV_INTRAN
SET NEW_ADV_NUM = @TMP_END_ADV_NUM
WHERE JOB_INST_ID = @JOB_INST_ID
AND TMP_PRNJ250M2_ADV_TRAN_ID = @INTRAN_ID

PRINT 'END PROCESS TIME FOR NEW ADV NUM INTO TABLE'+ CONVERT(VARCHAR(32), CURRENT_TIMESTAMP, 109)
------INSERT RECORD IN ZIP REPORT WHEN SSN>0 AND ZIP_COD=''------
-- IF(CONVERT(BIGINT,@num) > 0
-- AND LTRIM(RTRIM(@ZIPCD)) = '' )
-- BEGIN
-- INSERT INTO MPAS_TMP.dbo.TMP_PRNJ250M_ZIPRPT
-- SELECT @JOB_INST_ID , @SYS , @num , @LOC ,
-- @LNAME , @F_NAME , @INIT , @MISC_ADD ,
-- @ADDRESSX , @CTY_ST , @ZIPCD
-- END

FETCH NEXT FROM CR1 INTO @JOB_INST_ID , @ADV_NUM , @SORT_CODE ,
@SYS , @LOC , @num,
@F_NAME , @LNAME , @INIT ,
@MISC_ADD , @ADDRESSX , @CTY_ST ,
@ZIPCD , @INTRAN_ID
END---------------------CURSOR


CLOSE CR1
DEALLOCATE CR1

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-02-04 : 22:48:23
You need to give more detail on your requirement with some sample data,table structures and expected output to make it easier for providing a solution.
Go to Top of Page
   

- Advertisement -