Ana está desenvolvendo um programa em PL/SQL para capturar e armazenar um histórico de mensagens que contém 3 GB de tamanho. Para manipular essa informação em uma variável, no Oracle PL/SQL, Ana deve declarar uma variável do tipo:
- A)CHAR;
Errada: CHAR é tipo de texto fixo e muito limitado, inadequado para armazenar gigabytes em uma variável.
- B)CLOB;
Certa: CLOB é o tipo Oracle destinado a armazenar grandes volumes de texto, inclusive da ordem de GB.
- C)NCHAR;
Errada: NCHAR armazena texto nacional em tamanho fixo e não suporta um histórico de 3 GB.
- D)VARCHAR2;
Errada: VARCHAR2 é variável, mas continua sendo um tipo de string comum, com limite muito menor que o necessário.
- E)NVARCHAR2.
Errada: NVARCHAR2 também é string nacional de tamanho variável, porém não serve para volumes gigantes de dados.
Gabarito: B
Quando a questão fala em armazenar um texto enorme em PL/SQL, o primeiro alerta é: variável comum não vai dar conta. No Oracle, tipos como CHAR, VARCHAR2, NCHAR e NVARCHAR2 servem para textos bem menores, com limites de tamanho que não chegam perto de gigabytes. Eles são ótimos para campos curtos e médios, mas não para um histórico gigantesco de mensagens. Para conteúdos muito grandes, o Oracle usa os Large Objects, os famosos LOBs. No caso de texto puro, o tipo adequado é o CLOB (Character Large Object), criado justamente para armazenar grandes volumes de caracteres. Em PL/SQL, ele permite manipular textos extensos sem esbarrar nos limites dos tipos de cadeia convencionais. Então, se a informação tem 3 GB, a escolha natural é CLOB. Isso porque ele foi feito para suportar grandes blocos de texto, bem acima do que VARCHAR2, CHAR, NCHAR ou NVARCHAR2 conseguem representar em uma variável. Em prova, a palavra-chave aqui é "histórico grande de mensagens": isso grita LOB. Resumo de prova: texto pequeno usa strings comuns; texto enorme usa CLOB. Se a banca joga tamanho em GB, não caia na tentação de marcar tipo textual básico, porque ele parece parecido, mas não foi feito para isso.