FC ConcursosFC Concursos

Questão FC372901

Considere o código PL/SQL abaixo. DROP TABLE tab; CREATE TABLE tab (ch CHAR(3 CHAR)); DECLARE str VARCHAR2(5 CHAR) := 'DPEAM'; BEGIN INSERT INTO tab(ch) VALUES(str); END; / Executa

Linguagem SQL

FCC · 2018

Considere o código PL/SQL abaixo. 

 

DROP TABLE tab;

CREATE TABLE tab (ch CHAR(3 CHAR));

 

DECLARE

   str VARCHAR2(5 CHAR) := 'DPEAM';

BEGIN

   INSERT INTO tab(ch) VALUES(str);

END;

/ 

Executar o código acima no Oracle 12c, em condições ideais, resulta em 

  1. PL/SQL procedure successfully completed.
  2. PL/SQL: numeric or value error: character string buffer too large or too small.
  3. ORACLE table successfully created.
  4. ERROR: character string buffer too small.
  5. ERROR: value too large for column.
Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

O erro ocorre porque a coluna foi criada como CHAR(3 CHAR) (capacidade para 3 caracteres) e a variável contém VARCHAR2(5 CHAR) com o valor 'DPEAM' (5 caracteres).

Ao executar o INSERT, o Oracle verifica o tamanho do dado em caracteres e não realiza truncamento automático; como o valor excede a capacidade da coluna, a operação falha.

Em Oracle 12c isso resulta na mensagem de erro informando que o valor é muito grande para a coluna: ERROR: value too large for column.

Correções possíveis: ajustar a definição da coluna para acomodar 5 caracteres (ex.: CHAR(5) ou VARCHAR2(5)), ou inserir um valor com no máximo 3 caracteres.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo