Reformatted to make that readable
DECLARE CURSOR_UPDATE_LIVE CURSOR
FOR
SELECT ACTUAL_LINE_ID, TEMP_LINE_ID, ATTRIBUTE1, ATTRIBUTE2,
CONVERT(VARCHAR(11), LTRIM(RTRIM(ATTRIBUTE3)), 106),
CONVERT(VARCHAR(11), LTRIM(RTRIM(ATTRIBUTE4)), 106), ATTRIBUTE5,
ATTRIBUTE6, ATTRIBUTE7
FROM TEMP_table
WHERE ACTION_FLAG = 'U'
AND SESSION_ID = @PBI_SESSION_ID
AND TRN = @PBI_TRN
OPEN CURSOR_UPDATE_LIVE
FETCH NEXT FROM CURSOR_UPDATE_LIVE INTO @li_actual_line_id, @li_temp_line_id,
@li_calendar_header_id, @lvc_period_name, @ld_from_date_1, @ld_to_date_1,
@li_quarter_num, @lvc_f_year, @li_adjusting_period
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE GL_CALENDAR_LINES
SET CAL_HEADER_ID = @PVC_CALENDAR_HEADER_ID,
PERIOD_NAME = @lvc_period_name, FROM_DATE = @ld_from_date_1,
TO_DATE = @ld_to_date_1, QUARTER_NUM = @li_quarter_num,
F_YEAR = @lvc_f_year, ADJUSTING_PERIOD = @li_adjusting_period,
TRN = @PBI_TRN, STATUS = 1, SESSION_ID = @PBI_SESSION_ID
WHERE CAL_LINE_ID = @li_actual_line_id
FETCH NEXT FROM CURSOR_UPDATE_LIVE INTO @li_actual_line_id,
@li_temp_line_id, @li_calendar_header_id, @lvc_period_name,
@ld_from_date_1, @ld_to_date_1, @li_quarter_num, @lvc_f_year,
@li_adjusting_period
END
CLOSE CURSOR_UPDATE_LIVE
DEALLOCATE CURSOR_UPDATE_LIVE
Honestly, I don't see anything in there that needs a cursor. A single update (Update ... from) should do the job.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability