o loop FOR

o loop FOR é indiscutivelmente o loop mais importante implementado em PL/pgSQL. Use thefor loop para iterar um bloco de instruções em um intervalo de inteiros que você especificar. Thestructure de um loop FOR em PL/pgSQL é semelhante ao FORloops em outras línguas processuais, tais como C.

Em PL/pgSQL PARA loop de uma variável integer é mencionado primeiro, para acompanhar o iterationof o ciclo, o intervalo inteiro é dado, e, finalmente, um bloco de declaração é fornecida. A variável integer criada totrack a iteração do loop é destruída quando o loop sai; ele não precisa ser declarado na seção de declaração do bloco. O seguinte mostra a sintaxe do loop FOR:

 FOR identifier IN expression1 .. expression2 LOOP statement; END LOOP;

o loop FOR executará uma única iteração para cada valor incrementado deidentificador que está no intervalo de valores entre, e incluindo, expressão1e expressão2. O valor identificador será inicializado para o valor deexpression1, independentemente de quaisquer configurações anteriores, e incrementado por um cada iteração. IfREVERSE é especificado, identificador será decrementado ratherthan incrementado.

Nota: O identificador usado para rastrear a iteração não precisa ser declarado fora do bloco theFOR, a menos que você queira acessar seu valor após o loop ter terminado.

o loop FOR também pode ser usado para percorrer os resultados de uma consulta. O segundo para loop no exemplo 11-45 demonstra o uso de loop aFOR para trabalhar com variáveis RECORD e % ROWTYPE. A sintaxe de um loop FOR thatiterates por meio de variáveis de registro e %ROWTYPE é mostrada na seguinte sintaxe:

 FOR { record_variable | %rowtype_variable } IN select_statement LOOP statement; END LOOP;

no exemplo 11-45, a função extract_all_titles () é usada para extrair uma lista de todos os títulos de livros que existem no banco de dados, organizados por assunto. Quando um assunto não tem títulos de livros, a linha ablank é exibida. A lista é retornada como uma variável de texto. Um loop FOR éUtilizado dentro da função extract_all_titles () para percorrer os availablesubjects por número.

outro loop FOR é aninhado dentro do loop original para percorrer os availablebooks e recuperar todos os livros com valores subject_id que correspondem à variável de leitura do loop original, que representa o número de ID do assunto atual que a função está procurando. No exemplo 11-45, a variável de iteração I é inicializada para zero porque o primeiro número de ID do assunto em nossa tabela de assuntos é 0.

exemplo 11-46 mostra o código de outra função que usa o loop aFOR para iterar através dos resultados de uma consulta SQL. Com cada iteração do loop loopthe for no exemplo 11-46, coloca o conteúdo da linha aresult de uma consulta na tabela livros na variável row_data e, em seguida, insere o valor do campo de título da linha na variável thetext_output.

o loop termina quando o último registro nos livros é alcançado. No final do loop,text_output conterá uma lista de todos os títulos de livros que correspondem ao ID do assunto numberpassed à função. A variável text_output é retornada no final da função.

exemplo 11-47 mostra os resultados doextract_title () função quando 2, que representa “livros infantis” na tabela de assunto, é passado como um argumento.

a variável row_data é declarada como % ROWTYPEof the books table porque só será usada para manter registros da tabela de livros. Poderíamos ter declarado row_data como aRECORD para realizar o mesmo resultado, mas o RECORDtype deve ser usado quando você estiver usando a variável por mais do que apenas as linhas de uma tabela específica:

row_data RECORD;

a função extract_title () retornará os mesmos resultados se os dados da linha estiverem declarados como registro ou forem declarados usando%ROWTYPE.

Deixe uma resposta

O seu endereço de email não será publicado.