Curso PL/SQL: Cursor e Exceções Flashcards
O que significa passar um parâmetro de forma normal para uma procedure?
Significa que o valor da variável não será alterado no programa principal após a execução da procedure.
Como podemos passar um parâmetro de forma especial em uma procedure?
Utilizando uma sintaxe específica que permite que as alterações feitas na variável dentro da procedure sejam refletidas no programa principal.
O que acontece com a variável V_1 quando passada normalmente para uma procedure?
O valor de V_1 permanece o mesmo no programa principal, independentemente das alterações feitas dentro da procedure.
O que acontece com a variável V_2 quando passada de forma especial para uma procedure?
O valor de V_2 é atualizado no programa principal com o valor que foi atribuído a ela dentro da procedure.
Qual é a diferença entre passar parâmetros por valor e por referência em PL/SQL?
Passar por valor não reflete alterações no programa principal, enquanto passar por referência permite que as alterações feitas dentro da procedure sejam refletidas fora dela.
Precisamos criar um processo no PL/SQL que resolva as seguintes equações:
X = A + B
Y = A * B
Queremos criar um processo (que pode ser uma função ou procedure) que calcule, de forma mais otimizada, o valor de X e Y. O que devemos fazer?
A) Criamos uma procedure, passando como parâmetros por valor A e B e por referência X e Y.
B)Criamos duas procedures: uma para calcular X, passando como parâmetros A e B (como valor) e X (como referência), e outra para calcular Y, passando também os parâmetros A e B (como valor) e Y (como referência).
C)Criamos duas funções, uma para calcular X, passando como parâmetros A e B, e outra para calcular Y, passando também o parâmetro A e B.
Criamos uma procedure, passando como parâmetros por valor A e B e por referência X e Y.
(Como X e Y foram passados por referência e, se dentro da procedure, teremos as duas fórmulas matemáticas, no final, teremos X e Y com os valores dos resultados dos cálculos.)
No último vídeo, ocorreu a seguinte transformação do CNPJ:
De: 68090
Para: 680/90
Usando o seu conhecimento de Oracle, e sabendo que o CNPJ sempre será de 5 dígitos, como deve ser a procedure, que criamos no curso, para transformar o CNPJ em 68/09-0?
CREATE OR REPLACE PROCEDURE formata_cnpj (
p_CNPJ IN CLIENTE.CNPJ%type,
p_CNPJ_SAIDA OUT CLIENTE.CNPJ%type
)
IS
BEGIN
p_CNPJ_SAIDA := SUBSTR(p_CNPJ,1,2) || ‘/’ || SUBSTR(p_CNPJ,3,2) || ‘-‘ || SUBSTR(p_CNPJ,5,1);
END;
O que é um parâmetro IN em PL/SQL?
Um parâmetro IN é passado por valor, ou seja, o valor é enviado para a procedure, mas não pode ser modificado dentro dela.
Como um parâmetro OUT funciona em PL/SQL?
Um parâmetro OUT é passado por referência, permitindo que a procedure modifique seu valor e retorne essa modificação para o programa que chamou a procedure.
Quais são as principais características de um parâmetro IN?
Recebe um valor na chamada da procedure.
Não pode ser alterado dentro da procedure.
Usado para fornecer dados à procedure.
Quais são as principais características de um parâmetro OUT?
Não precisa receber um valor na chamada da procedure.
Pode ser alterado dentro da procedure.
Usado para retornar dados ao programa que chamou a procedure.
Qual é a diferença principal entre parâmetros IN e OUT?
Parâmetros IN são usados para enviar dados para a procedure sem permitir alterações, enquanto parâmetros OUT são usados para retornar dados, permitindo modificações dentro da procedure.
A maneira das aplicações externas se comunicarem com as procedures é através dos parâmetros, e os parâmetros com o modo de passagem IN são os mais utilizados.
Qual característica do parâmetro IN, abaixo, que é verdadeira?
a) Dentro da procedure, o valor do parâmetro IN pode ser modificado.
b) É o modo de passagem padrão.
c) Pode devolver valor para o ambiente que executa a procedure.
É o modo de passagem padrão.
Se omitirmos o tipo de parâmetro (IN ou OUT), o padrão será IN.
SET SERVEROUTPUT ON;
declare
v_CNPJ cliente.cnpj%type;
v_CNPJ_SAIDA cliente.cnpj%type;
begin
v_CNPJ := ‘1234567890’;
v_CNPJ_SAIDA := ‘1234567890’;
dbms_output.put_line(v_CNPJ||’ ‘||v_CNPJ_SAIDA);
FORMATA_CNPJ(v_CNPJ,v_CNPJ_SAIDA);
dbms_output.put_line(v_CNPJ||’ ‘||v_CNPJ_SAIDA);
end;
O que faz o comando SET SERVEROUTPUT ON?
Ele ativa a exibição de mensagens de saída no console, permitindo que o dbms_output.put_line() mostre resultados.
SET SERVEROUTPUT ON;
declare
v_CNPJ cliente.cnpj%type;
v_CNPJ_SAIDA cliente.cnpj%type;
begin
v_CNPJ := ‘1234567890’;
v_CNPJ_SAIDA := ‘1234567890’;
dbms_output.put_line(v_CNPJ||’ ‘||v_CNPJ_SAIDA);
FORMATA_CNPJ(v_CNPJ,v_CNPJ_SAIDA);
dbms_output.put_line(v_CNPJ||’ ‘||v_CNPJ_SAIDA);
end;
O que são v_CNPJ e v_CNPJ_SAIDA?
São variáveis do tipo cliente.cnpj%type, que armazenam valores de CNPJ.
O que acontece se tentarmos modificar uma variável IN dentro da procedure?
Tentativas de alterar o valor de uma variável IN resultam em erro de compilação.
A variável OUT pode ser usada como fonte de valor ao chamar a procedure?
Não, a variável OUT não pode ser usada como fonte de valor; ela apenas recebe valores.
Sobre os parâmetros IN e OUT, analise as afirmações abaixo:
1) O parâmetro IN pode receber valor dentro da procedure.
2) O parâmetro OUT pode receber valor dentro da procedure.
3) O parâmetro IN pode ser atribuído a outra variável dentro da procedure.
4) O parâmetro OUT pode ser atribuído a outra variável dentro da procedure.
Veja a opção correta sobre quais afirmações são verdadeiras e quais são falsas.
1 - Falsa, 2 - Verdadeira, 3 - Verdadeira, 4 - Falsa.
O parâmetro IN somente pode atribuir seu valor a outras variáveis e o OUT só pode receber valores de outras variáveis. Qualquer outro caso deve ser associado a uma variável declarada entre o IS e o BEGIN.
O que significa um parâmetro IN OUT em PL/SQL?
Um parâmetro IN OUT permite que a variável seja utilizada tanto como entrada quanto como saída, podendo ser modificada dentro da procedure.
Qual é a principal vantagem de usar um parâmetro IN OUT?
A principal vantagem é a flexibilidade, pois você pode passar um único parâmetro que serve tanto para receber um valor quanto para retornar um valor modificado.
create or replace PROCEDURE DUPLICA_VALOR
(p_VALOR IN FLOAT)
IS
BEGIN
p_VALOR := p_VALOR * 2;
END;
Altere essa procedure para que possamos usar a variável p_VALOR tanto como entrada quanto como saída.
create or replace PROCEDURE DUPLICA_VALOR
(p_VALOR IN OUT FLOAT)
IS
BEGIN
p_VALOR := p_VALOR * 2;
END;
O que é o comando EXECUTE em PL/SQL?
O comando EXECUTE é utilizado para chamar e executar uma procedure ou função previamente definida no banco de dados.
Como é a sintaxe básica do comando EXECUTE?
A sintaxe básica é: EXECUTE nome_da_procedure(parâmetros);
O que deve ser considerado ao passar parâmetros para uma procedure usando EXECUTE?
Os parâmetros devem ser passados na ordem correta e devem corresponder aos tipos de dados esperados pela procedure.