PL/SQL - Ajuda com loops

Pessoal bom dia,

Trabalhei algum tempo com VB6 mas agora iniciei em uma nova oportunidade de trabalho com PL/SQL, preciso de ajuda para entender como funcionam as comparações nessa linguagem, por exemplo, estou desenvolvendo um relatório que rodará um SELECT e para cada registro (id) preciso fazer uma consulta na base para saber se houve entrada de dados na tabela para o mesmo código (id) nos últimos 30 dias, se positivo, vou indicar ‘SIM’ em uma coluna nomeada como REINCIDENTE, senão não farei nada… Gostaria de saber como posso montar isso e se devo usar CURSOR, pois tenho lido sobre ele e pra quem entende um pouquinho de VB me parece familiar com o RecordSet, onde eu guardo o resultado do SELECT e navego registro por registro verificando minhas consistências… por favor, se alguém puder postar um bloco com esse exemplo que eu passei, ficarei muito grato.

Valeu, obrigado.

Primeiramente qual seria o banco? Sybase, oracle, mysql, postgresql?

Bom dia,

Banco Oracle ! To usando como IDE o PL/SQL Developer

Valeu,

cursor c1 (codigo_cliente number, idade number) is
select cd_cliente,
nr_idade
from CLIENTE_DADOS

  --passei dois parametros como exemplo
 open c1 (codigo_cliente, idade);      		        	
	loop
        fetch c1 into v_codigo_cliente, v_idade;
       	exit when c1%NOTFOUND;	            
        begin	
			for resultado in (select 1 										
								from TABELA
							   where codigo = codigo_cliente)
			loop					
				-- tt_dados_conf tabela temporária
				insert into tt_dados_conf(codigo, reincidente)
					values(v_codigo_cliente, 1);		
			end loop;
		end;
	end loop;			
	
	open p_cursor for
		select codigo, reincidente
		  from tt_dados_conf

Acredito que vc precisara criar uma tabela temporária…tt_dados_conf
retorno coloquei dentro de um cursor…p_cursor
espero que te ajude…
Um abraço

Ótimo @Manoel_Rosa , vou analisar com calma, obrigado,

Só mais uma dúvida, eu fiz um teste usando SUBSELECT dentro do SELECT, gostaria de saber se isso faz com que a busca seja feita a cada registro do meu SELECT principal, descartando a necessidade do uso do CURSOR, qual a diferença entre usar um ou outro?

(SELECT COUNT(a.cd_atendimento) FROM ATENDIME a WHERE ((a.dt_atendimento >= TRUNC(SYSDATE - 30))) and (a.cd_paciente = p.cd_paciente) and (a.tp_atendimento = ‘i’)) AS ULTIMA_INT,

Obrigado.

Cara se vc consegue o resultado numa subquery nem pense duas vezes…
o cursor sera mais oneroso que a subquery…
Cursores (geralmente)consomem muitos recursos do servidor, facilitando a ocorrência de deadlocks que poderiam ser evitados. Um cursor seria como um arquivo temporário que armazena e controla as linhas retornadas de um comando select… serviria para vc manipular os dados(fazer consultas, alterar, montar uma estrutura de retorno)…
Quando vi a sua duvida imaginei que uma subquery ajudaria, mais não conheço a estrutura então tentei criar um cursor de exemplo.

Ótimo @Manoel_Rosa , consegui usando a SUBQUERY mesmo, só estava na dúvida se tinham o mesmo sentido, manipular todos os dados encontrados no SELECT principal, obrigado pelo exemplo de CURSOR, vou guardá-lo aqui pois com certeza logo precisarei usar, estou com muitos relatórios pendentes, rsrs… Valeu grande abraço.