Chiappa, bom dia! OK. Compreendido. Vou verificar os detalhes, daqui, agora. E - mais uma vez - muito obrigado por todas as dicas/informações fornecidas. Um abraço Eugênio Tenórioeu_tenór...@yahoo.com.br
Em terça-feira, 3 de abril de 2018 10:00:16 BRT, jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: Tudo blz ? Então, antes de responder a sua pergunta , deixa eu confirmar : vc ENTENDEU que o seu erro é de SINTAXE, vc está usando um comando DE MANEIRA ERRADA, né ? E isso não tem como prevenir, o procedimento é SIMPLESMENTE escrever o comando corretamente, sim sim ?? Muito bem : isso posto e entendido, os erros de runtime (ie, um comando escrito de maneira CORRETA e VÁLIDA que encontra uma situação excepcional - tipo, não encontrou dados, ou recebeu mais dados que o previsto, um dado inválido apenas em poucas linhas, etc) são capturados no PL/SQL *** não *** com um IF mas sim com uma cláusula EXCEPTION : pense na EXCEPTION como um condição de ON ERROR GOTO no BASIC, tipo um ponto da sua rotina para onde o fluxo de execução vai ser DESVIADO automaticamente quando der erro... A sintaxe dele é : imediatamente antes de um END que termina um bloco BEGIN/END vc declara a área de EXCEPTION e indica quais linhas vão ser acionadas em quais situações de erro... ==> o CRITICAMENTE IMPORTANTE pra ser dito aqui (vide manual oficial Oracle em https://docs.oracle.com/cloud/latest/db112/CNCPT/transact.htm#CNCPT016) é que um comando SQL é ATÔMICO, ie, ele TEM SUCESSO OU FALHA na íntegra, pra TODAS as linhas de TODAS as tabelas envolvidas.... Assim, se vc tem um SELECT que vc pediu pro SQL executar na íntegra (é o que acontece tanto pra cursor implícito quanto pra SQL inserido fora de LOOPs), não há como vc controlar o erro a nível de LINHA, uma falha é uma falha.... SE vc quer ter controle absoluto a esse nível, a nível de CADA LINHA RECUPERADA, em princípio vc TEM que usar cursor EXPLÍCITO, onde é VOCÊ que manda o PL/SQL ler cada linha do SELECT contido no cursor , assim vc Pode capturar / tratar cada erro em cada linha... Para exemplo, digamos que vou pesquisar uma tabela por uma coluna que não é chave única, e assim estou prevendo que possa ter mais de uma linha retornada a cada pedido de leitura, o que viola o fato de que uma variável local (sem ser array) só pode ter UM valor assignado a cada vez - nesse caso uma Opção poderia ser tratar a exceção... Não é a única NEM a melhor mas serve como exemplo didático... Seria algo mais ou menos tipo : CREATE OR REPLACE PROCEDURE PROC_NOME_COMPLETO (P_DEPARTMENT_ID number) IS l_employee_full_name VARCHAR2(500); cursor c is SELECT last_name || ', ' || first_name FROM employees WHERE DEPARTMENT_ID = P_DEPARTMENT_ID; BEGIN open c; loop Begin fetch c into l_employee_full_name; Exit When c%NotFound; Dbms_Output.Put_Line('Empregado Depto=' || P_DEPARTMENT_ID || ',full name=' || l_employee_full_name); Exception when TOO_MANY_ROWS then dbms_output.put_line('Depto=' || P_DEPARTMENT_ID || ' possui mais de um empregado!!'); End; end loop; close c; END; ==> Claro, o construto acima é PSEUDOCÓDIGO, não o executei mas acho que deu pra pegar a idéia : Ou seja, vc aplica a condição de erro num EXCEPTION, não existe IF envolvido... Okdoc ?? mais refs, goto manual PL/SQL da sua versão.... []s Chiappa #yiv5688126680 #yiv5688126680 -- #yiv5688126680ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5688126680 #yiv5688126680ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5688126680 #yiv5688126680ygrp-mkp #yiv5688126680hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv5688126680 #yiv5688126680ygrp-mkp #yiv5688126680ads {margin-bottom:10px;}#yiv5688126680 #yiv5688126680ygrp-mkp .yiv5688126680ad {padding:0 0;}#yiv5688126680 #yiv5688126680ygrp-mkp .yiv5688126680ad p {margin:0;}#yiv5688126680 #yiv5688126680ygrp-mkp .yiv5688126680ad a {color:#0000ff;text-decoration:none;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ygrp-lc {font-family:Arial;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ygrp-lc #yiv5688126680hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ygrp-lc .yiv5688126680ad {margin-bottom:10px;padding:0 0;}#yiv5688126680 #yiv5688126680actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5688126680 #yiv5688126680activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5688126680 #yiv5688126680activity span {font-weight:700;}#yiv5688126680 #yiv5688126680activity span:first-child {text-transform:uppercase;}#yiv5688126680 #yiv5688126680activity span a {color:#5085b6;text-decoration:none;}#yiv5688126680 #yiv5688126680activity span span {color:#ff7900;}#yiv5688126680 #yiv5688126680activity span .yiv5688126680underline {text-decoration:underline;}#yiv5688126680 .yiv5688126680attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv5688126680 .yiv5688126680attach div a {text-decoration:none;}#yiv5688126680 .yiv5688126680attach img {border:none;padding-right:5px;}#yiv5688126680 .yiv5688126680attach label {display:block;margin-bottom:5px;}#yiv5688126680 .yiv5688126680attach label a {text-decoration:none;}#yiv5688126680 blockquote {margin:0 0 0 4px;}#yiv5688126680 .yiv5688126680bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv5688126680 .yiv5688126680bold a {text-decoration:none;}#yiv5688126680 dd.yiv5688126680last p a {font-family:Verdana;font-weight:700;}#yiv5688126680 dd.yiv5688126680last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5688126680 dd.yiv5688126680last p span.yiv5688126680yshortcuts {margin-right:0;}#yiv5688126680 div.yiv5688126680attach-table div div a {text-decoration:none;}#yiv5688126680 div.yiv5688126680attach-table {width:400px;}#yiv5688126680 div.yiv5688126680file-title a, #yiv5688126680 div.yiv5688126680file-title a:active, #yiv5688126680 div.yiv5688126680file-title a:hover, #yiv5688126680 div.yiv5688126680file-title a:visited {text-decoration:none;}#yiv5688126680 div.yiv5688126680photo-title a, #yiv5688126680 div.yiv5688126680photo-title a:active, #yiv5688126680 div.yiv5688126680photo-title a:hover, #yiv5688126680 div.yiv5688126680photo-title a:visited {text-decoration:none;}#yiv5688126680 div#yiv5688126680ygrp-mlmsg #yiv5688126680ygrp-msg p a span.yiv5688126680yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5688126680 .yiv5688126680green {color:#628c2a;}#yiv5688126680 .yiv5688126680MsoNormal {margin:0 0 0 0;}#yiv5688126680 o {font-size:0;}#yiv5688126680 #yiv5688126680photos div {float:left;width:72px;}#yiv5688126680 #yiv5688126680photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv5688126680 #yiv5688126680photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv5688126680 #yiv5688126680reco-category {font-size:77%;}#yiv5688126680 #yiv5688126680reco-desc {font-size:77%;}#yiv5688126680 .yiv5688126680replbq {margin:4px;}#yiv5688126680 #yiv5688126680ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv5688126680 #yiv5688126680ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv5688126680 #yiv5688126680ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv5688126680 #yiv5688126680ygrp-mlmsg select, #yiv5688126680 input, #yiv5688126680 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv5688126680 #yiv5688126680ygrp-mlmsg pre, #yiv5688126680 code {font:115% monospace;}#yiv5688126680 #yiv5688126680ygrp-mlmsg * {line-height:1.22em;}#yiv5688126680 #yiv5688126680ygrp-mlmsg #yiv5688126680logo {padding-bottom:10px;}#yiv5688126680 #yiv5688126680ygrp-msg p a {font-family:Verdana;}#yiv5688126680 #yiv5688126680ygrp-msg p#yiv5688126680attach-count span {color:#1E66AE;font-weight:700;}#yiv5688126680 #yiv5688126680ygrp-reco #yiv5688126680reco-head {color:#ff7900;font-weight:700;}#yiv5688126680 #yiv5688126680ygrp-reco {margin-bottom:20px;padding:0px;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ov li a {font-size:130%;text-decoration:none;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv5688126680 #yiv5688126680ygrp-sponsor #yiv5688126680ov ul {margin:0;padding:0 0 0 8px;}#yiv5688126680 #yiv5688126680ygrp-text {font-family:Georgia;}#yiv5688126680 #yiv5688126680ygrp-text p {margin:0 0 1em 0;}#yiv5688126680 #yiv5688126680ygrp-text tt {font-size:120%;}#yiv5688126680 #yiv5688126680ygrp-vital ul li:last-child {border-right:none !important;}#yiv5688126680