0
respostas

Erros gerados nos script do exercício

Boa tarde!

SET SERVEROUTPUT ON;
DECLARE
   v_ID VARCHAR(10) := 'Novo programa PL/SQL';
BEGIN 
   dbms_output.put_line(v_ID);
   v_ID := 2 ;
   dbms_output.put_line(v_ID);
END;

Executando o script no ambiente online (https://freesql.com/), inicialmente o erro gerado foi o seguinte:

ORA-06502: PL/SQL: value or conversion error: character string buffer too small
ORA-06512: at line 2
https://docs.oracle.com/error-help/db/ora-06502/
Error at Line: 1 Column: 1

Então, modifiquei o código, para atribuir à variável, dentro do bloco BEGIN, um valor do tipo "char", como segue:

SET SERVEROUTPUT ON;
DECLARE
   v_ID VARCHAR(10) := 'Novo programa PL/SQL';
BEGIN 
   dbms_output.put_line(v_ID);
   v_ID := '2' ;
   dbms_output.put_line(v_ID);
END;

Então, foi gerado um outro erro:

ORA-06502: PL/SQL: value or conversion error: character string buffer too small
ORA-06512: at line 2
https://docs.oracle.com/error-help/db/ora-06502/
Error at Line: 1 Column: 1

Concluí que o problema principal não é de conversão. Basta ajustar o tamanho da variável no bloco DECLARE para que caiba a expressão inicial ("Novo programa PL/SQL"), para que o script seja executado corretamente:

SET SERVEROUTPUT ON;
DECLARE
   v_ID VARCHAR(20) := 'Novo programa PL/SQL';
BEGIN 
   dbms_output.put_line(v_ID);
   v_ID := '2' ;
   dbms_output.put_line(v_ID);
END;