SóProvas


ID
579631
Banca
FCC
Órgão
TRT - 19ª Região (AL)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Em relação à criação de um bloco PL/SQL, está INCORRETO:

Alternativas
Comentários
  • É possível especificar uma variável sem atribuir um valor inicial. As variáveis não inicializadas explicitamente vão receber o valor NULL, sendo desnecessário inicializar uma variável com valor nulo.
  • Uma afirmação errada na alternativa "b" é: "todas as linhas devem terminar com ponto e vírgula". Não necessariamente. Um comando pode ir além de uma linha. Nesse caso, o ponto e vírgula somente deverá ser utilizado ao final do comando.
  • A Letra D também não estaria incorreta? Quando afirma que a diferença entre uma  variável e uma constante é  "apenas" pela palavra chave CONSTANT? Ela não deveria ter um valor inicial?
  • O " ; " significa fim de paragrafo. Desta forma, nem toda linha deverá conter " ; ".
    Exemplo:
    Em uma instrunção SQL ou em uma estrutura seletiva, como uso do IF e ELSE, não poderá conter o fim do paragrafo ( ; ) no "meio" da estrutura. Caso tenha, ocorrerá erro na compilação.
  • @leandro Silva Também marquei a D inicialmente mas depois vi que existe a declaração:

    				constant_name CONSTANT datatype := VALUE; 
    • constant_name = é o nome da variaável constante.
    • A palavra CONSTANT é reservada e assegura que os valores não vão mudar.
    • VALUE - Éum valor que precisa ser atribuido a constante na declaração da mesma. Não é possível atribuir o valor depois.

    Um exemplo:

    DECLARE 
    salary_increase CONSTANT number (3) := 10;  
  • Na minha opinião caberia recurso nessa questão, pelo que é dito na letra a):

    a) A seção de Declaração é opcional somente quando o bloco não utilizar constantes ou variáveis. 


    O autor diz que a parte declarativa é opcional somente quando o bloco não utilizar constantes ou variáveis. Acontece que ela deixa de ser opcional quando eu preciso declarar subprogramas, como no exemplo abaixo:

    DECLARE
      PROCEDURE proc1(number1 NUMBER); -- forward declaration
      PROCEDURE proc2(number2 NUMBER) IS
        BEGIN
          proc1(number2); -- calls proc1
        END;
      PROCEDURE proc1(number1 NUMBER) IS
        BEGIN
          proc2 (number1); -- calls proc2
        END;
    BEGIN
      NULL;


    Portanto, a palavra somente, em minha opinião, deixa a assertiva incorreta.