Could someone please explain to me why I have error message show up when I exec the stored procedure. "A cursor with the name 'tName_cursor' already exists"
DECLARE @tName VARCHAR(100)
DECLARE @lsql VARCHAR(8000)
DECLARE tName_cursor CURSOR FOR
SELECT NAME FROM SYS.tables WHERE TYPE = 'U' AND NAME LIKE 'PPM_METRIC%'
OPEN tName_cursor;
FETCH NEXT FROM tName_cursor INTO @tName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @lsql = N'
UPDATE [' +@tName+ ']
SET LATESTOFALL_FLG = ''N''
FROM [' +@tName+ '] T
JOIN D_CUSTOM_METRICS_RULE S
ON T.METRIC_ID = S.CUSTOM_METRIC_RULE_ID
AND T.LATESTOFALL_FLG = ''Y'''
EXECUTE sp_executesql @lsql
FETCH NEXT FROM tName_cursor INTO @tName;
END
CLOSE tName_cursor;
DEALLOCATE tName_cursor;
DECLARE tName_cursor_REDO CURSOR FOR
SELECT NAME FROM SYS.tables WHERE TYPE = 'U' AND NAME LIKE 'PPM_METRIC%'
OPEN tName_cursor_REDO;
FETCH NEXT FROM tName_cursor_REDO INTO @tName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @lsql = N'
UPDATE [' +@tName+ ']
SET LATESTOFDAY_FLG = ''N''
FROM [' +@tName+ '] T
JOIN D_CUSTOM_METRICS_RULE S
ON T.METRIC_ID = S.CUSTOM_METRIC_RULE_ID
AND T.CALC_METRIC_DATE_ID = CONVERT(INT,convert(VARCHAR, getdate(), 112))
AND T.LATESTOFDAY_FLG = ''Y'''
EXECUTE sp_executesql @lsql
FETCH NEXT FROM tName_cursor_REDO INTO @tName;
END
CLOSE tName_cursor_REDO;
DEALLOCATE tName_cursor_REDO;
ALTER PROCEDURE ....?