DECLARE @ID INT
DECLARE @DESCRICAO VARCHAR(100)
DECLARE @DIVISOR INT
DECLARE @PRIMO BIT
--Declaração de um Cursor.
DECLARE CUR CURSOR FOR SELECT 1 ID,'Um' DESCRICAO UNION ALL
SELECT 2, 'Dois' UNION ALL
SELECT 3, 'Tres' UNION ALL
SELECT 4, 'Quatro' UNION ALL
SELECT 5, 'Cinco' UNION ALL
SELECT 6, 'Seis' UNION ALL
SELECT 7, 'Sete'
--Abrindo um Cursor para uso.
OPEN CUR
--Leitura da tupla do cursor dentro das variáveis
FETCH NEXT FROM CUR INTO @ID, @DESCRICAO
--Caso exista dados no Select do Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
SET @PRIMO = 1 --Número é primo
SET @DIVISOR = @ID-1
WHILE @DIVISOR > 1
BEGIN
IF @ID % @DIVISOR = 0
BEGIN
SET @PRIMO = 0 --Número não é primo
BREAK
END
SET @DIVISOR = @DIVISOR -1
END
IF @PRIMO = 0 PRINT 'O número '+@DESCRICAO+' não é primo!'
ELSE PRINT 'O número '+@DESCRICAO+' é primo!'
--Leitura da tupla do cursor dentro das variáveis
FETCH NEXT FROM CUR INTO @ID, @DESCRICAO
END
--Fechando um cursor.
CLOSE CUR
--Liberando o cursor da memória (obrigatório)
DEALLOCATE CUR
Resultado:
O número Um é primo!
O número Dois é primo!
O número Tres é primo!
O número Quatro não é primo!
O número Cinco é primo!
O número Seis não é primo!
O número Sete é primo!