Курсоры (CURSOR) в MS-SQL

Пример использование курсоров

CREATE PROCEDURE Example_Cursor
AS
	DECLARE @updRecord CURSOR;
	DECLARE @uid BINARY(16);
	DECLARE @tablename NVARCHAR(35);
	DECLARE @dbname NVARCHAR(35);
	DECLARE @printMessage NVARCHAR(150);
BEGIN
	
	SET @updRecord = CURSOR FOR
		SELECT O._IDRRef, O.NAME_TABLE, O.NAME_DB FROM Obmen AS O

	OPEN @updRecord

	FETCH NEXT FROM @updRecord INTO @uid, @tablename, @dbname
	WHILE @@FETCH_STATUS=0
	BEGIN
		
		SET @printMessage = CAST(@uid AS nvarchar(16))+' | '+@tablename+' | '+@dbname
		print @printMessage;

		IF EXISTS (SELECT * FROM [1CZUP_test_powerBI].[dbo].[_AccOpt] WHERE _MDID=@uid ) 
			BEGIN
				print 'Update Record'
			END
		ELSE
			BEGIN
				print 'Insert Record'
			END

		FETCH NEXT FROM @updRecord INTO @uid, @tablename, @dbname
	END;

	CLOSE @updRecord;

	DEALLOCATE @updRecord;

END
Прокрутить вверх