Não inicializar variáveis com ' ', utilizar sempre NULL

De DTI Wiki

Ir para: navegação, pesquisa

Nbp.png OBRIGATÓRIO

Quando for necessário inicializar uma variável “em branco”, é mais legível a utilização de NULL, além de evitar problemas com campos do tipo CHAR. Uma variável CHAR(2), por exemplo, terá valores diferentes quando inicializada com e com NULL, se for inicializada com ela conterá 2 espaços em branco, e com NULL ela será realmente nula. Vale lembrar também que nunca devemos comparar nada com NULL utilizando = ou <> (= NULL ou <> NULL) porque a comparação não será feita e não haverá erro, a forma correta é utilizando IS (IS NULL ou IS NOT NULL);

Comonfazer.png COMO NÃO FAZER

		v_char := '';
		v_varchar := '';
		v_numeric := '';



Comofazer.png COMO FAZER

		v_char := NULL;
		v_varchar := NULL;
		v_numeric := NULL;



Exemplo;

		DECLARE
		    v_char       CHAR(10);
		    v_varchar    VARCHAR2(10);
		    v_numeric    NUMERIC(5, 0);
		BEGIN
		    DBMS_OUTPUT.put_line('Variáveis inicializadas com ''''');
		    v_char := '';
		    v_varchar := '';
		    v_numeric := '';
		    DBMS_OUTPUT.put_line('Testes com igual (=) a NULL');
 
		    IF v_char = NULL THEN
		        DBMS_OUTPUT.put_line('v_char é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_char não é nula');
		    END IF;
 
		    IF v_varchar = NULL THEN
		        DBMS_OUTPUT.put_line('v_varchar é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_varchar não é nula');
		    END IF;
 
		    IF v_numeric = NULL THEN
		        DBMS_OUTPUT.put_line('v_numeric é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_numeric não é nula');
		    END IF;
 
		    DBMS_OUTPUT.put_line('Testes com IS NULL');
 
		    IF v_char IS NULL THEN
		        DBMS_OUTPUT.put_line('v_char é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_char não é nula');
		    END IF;
 
		    IF v_varchar IS NULL THEN
		        DBMS_OUTPUT.put_line('v_varchar é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_varchar não é nula');
		    END IF;
 
		    IF v_numeric IS NULL THEN
		        DBMS_OUTPUT.put_line('v_numeric é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_numeric não é nula');
		    END IF;
 
		    DBMS_OUTPUT.put_line('Variáveis inicializadas com NULL');
		    v_char := NULL;
		    v_varchar := NULL;
		    v_numeric := NULL;
		    DBMS_OUTPUT.put_line('Testes com igual (=) a NULL');
 
		    IF v_char = NULL THEN
		        DBMS_OUTPUT.put_line('v_char é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_char não é nula');
		    END IF;
 
		    IF v_varchar = NULL THEN
		        DBMS_OUTPUT.put_line('v_varchar é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_varchar não é nula');
		    END IF;
 
		    IF v_numeric = NULL THEN
		        DBMS_OUTPUT.put_line('v_numeric é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_numeric não é nula');
		    END IF;
 
		    DBMS_OUTPUT.put_line('Testes com IS NULL');
 
		    IF v_char IS NULL THEN
		        DBMS_OUTPUT.put_line('v_char é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_char não é nula');
		    END IF;
 
		    IF v_varchar IS NULL THEN
		        DBMS_OUTPUT.put_line('v_varchar é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_varchar não é nula');
		    END IF;
 
		    IF v_numeric IS NULL THEN
		        DBMS_OUTPUT.put_line('v_numeric é nula');
		    ELSE
		        DBMS_OUTPUT.put_line('v_numeric não é nula');
		    END IF;
 
		    DBMS_OUTPUT.put_line('Fim');
		END;



Resultado;
Variáveis inicializadas com
Testes com igual (=) a NULL
v_char não é nula
v_varchar não é nulav v_numeric não é nula

Testes com IS NULL
v_char não é nula
v_varchar é nula
v_numeric é nula

Variáveis inicializadas com NULL
Testes com igual (=) a NULL
v_char não é nula
v_varchar não é nula
v_numeric não é nula

Testes com IS NULL
v_char é nula
v_varchar é nula
v_numeric é nula
Fim

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas