Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Chamando notação para sub-rotinas PL/SQL no banco de dados Oracle


Como alguns tutoriais anteriores eram sobre Sub-rotinas PL/SQL, como Funções PL/SQL e Stored Procedures, torna-se obrigatório falar sobre suas notações de chamada. Aprender os conceitos de Sub-rotinas PL/SQL não será considerado completo até que aprendamos também suas notações de chamada.

O que é notação de chamada para sub-rotinas PL/SQL?


A notação de chamada é uma maneira de fornecer valores aos parâmetros de uma sub-rotina, como uma função PL/SQL ou um procedimento armazenado.

Tipos de notações de chamada para sub-rotinas


No Oracle PL/SQL existem 3 tipos de notações de chamada. Esses são:
  1. Notação posicional
  2. Notação nomeada e
  3. Notação de chamada mista


Anotações de chamada posicionais


A notação posicional é a notação de chamada mais comum que você pode ver em quase todas as linguagens de programação de computador. Na notação posicional temos que especificar o valor para cada parâmetro formal de forma sequencial. Isso significa que você deve fornecer os valores para os parâmetros formais na mesma ordem em que foram declarados no procedimento ou na função.

Na notação posicional, o tipo de dados e a posição do parâmetro real devem corresponder ao parâmetro formal.

Leitura sugerida:parâmetros reais x parâmetros formais

Exemplo:notação posicional para chamar sub-rotinas PL/SQL.

CREATE OR REPLACE PROCEDURE emp_sal
(dep_id NUMBER, sal_raise NUMBER) 
IS
BEGIN
  	UPDATE employees 
SET salary = salary * sal_raise 
WHERE department_id = dep_id;
  
DBMS_OUTPUT.PUT_LINE ('salary updated successfully');
END;
 /

Este é o mesmo exemplo que fizemos no Tutorial PL/SQL 42 sobre como criar procedimento armazenado com parâmetros, embora com algumas pequenas alterações. Agora, se usarmos a notação de chamada posicional, teremos que fornecer os valores para ambos os parâmetros do procedimento acima da mesma maneira pela qual eles são declarados.

Chamada de procedimento armazenado usando notação posicional no banco de dados Oracle

EXECUTE emp_sal(40,2);

Nesta chamada de procedimento simples, o valor 40 corresponde ao parâmetro formal dep_id e o valor 2 corresponde ao parâmetro sal_raise.


Anotações de chamada nomeada


A notação de chamada nomeada permite passar valores para os parâmetros formais usando seus nomes. Isso, por sua vez, permitirá que você atribua valores apenas a parâmetros obrigatórios ou obrigatórios.

Esta notação de chamada é útil quando você tem uma sub-rotina com parâmetros onde alguns desses parâmetros são obrigatórios e outros são opcionais e você deseja passar os valores apenas para os obrigatórios.

Operador de Associação


Para atribuir valores aos parâmetros formais usando seus nomes, usamos o operador de associação. É uma combinação de sinal igual a (=) e sinal maior que (>). Escrevemos o nome do parâmetro formal no lado esquerdo do operador e o valor que você deseja atribuir ao lado direito do operador.

Exemplo de notação de chamada nomeada para chamar uma sub-rotina PL/SQL

CREATE OR REPLACE FUNCTION add_num
(var_1 NUMBER, var_2 NUMBER DEFAULT 0, var_3 NUMBER ) RETURN NUMBER 
IS
BEGIN
  RETURN var_1 + var_2 + var_3;
END;
/

A função acima tem 3 parâmetros. Entre esses 3 parâmetros, 2 são obrigatórios e 1 é opcional com valor padrão 0.

Você pode chamar essa função usando a notação posicional. Mas tem uma restrição que você tem que cumprir e é que você tem que fornecer valores para todos os parâmetros formais na mesma ordem em que eles são declarados e o tipo de dados dos parâmetros formais e reais devem corresponder.

Portanto, se você deseja omitir o parâmetro opcional e deseja usar seu valor padrão ou simplesmente esqueceu a ordem do parâmetro em que foram declarados! Então será um pouco difícil para você chamar a sub-rotina acima usando a notação posicional. Nesse cenário, você pode aproveitar a Notação de Chamada Nomeada. Esta notação de chamada fornecerá a flexibilidade desejada na chamada de suas sub-rotinas.

Chamada de função PL/SQL usando notação de chamada nomeada no banco de dados Oracle

DECLARE
  var_result  NUMBER;
BEGIN
  var_result := add_num(var_3 => 5, var_1 =>2);
  DBMS_OUTPUT.put_line('Result ->' || var_result);
END;

Expliquei detalhadamente a chamada da função PL/SQL no tutorial em vídeo sobre esse mesmo tópico no meu canal do YouTube.

Notação de chamada mista para chamar sub-rotinas PL/SQL


Como o nome sugere na notação de chamada mista, você pode chamar sub-rotinas usando a combinação de notações de chamada nomeada e posicional. A notação de chamada mista é muito útil onde a lista de parâmetros é definida com todos os parâmetros obrigatórios primeiro e os parâmetros opcionais em seguida.

Exemplo de notação de chamada mista para chamar sub-rotinas PL/SQL


Aqui está o bloco anônimo no qual estamos chamando a mesma função add_num ( ) que codificamos ao fazer a notação de chamada nomeada.
DECLARE
  var_result  NUMBER;
BEGIN
  var_result := add_num(var_1 => 10, 30 ,var_3 =>19);
  DBMS_OUTPUT.put_line('Result ->' || var_result);
END;

É assim que usamos a notação de chamada mista para chamar sub-rotinas PL/SQL.

Experimente você mesmo


Usando o conhecimento dos conceitos acima, tente resolver a seguinte questão:

Escreva uma função PL/SQL com parâmetros para trocar dois números e chame essa função usando notação de chamada mista.

Você pode compartilhar seu código ou o instantâneo do seu código comigo nas minhas redes sociais [Twitter // Facebook].

Espero que tenha gostado de ler. Não deixe de curtir e compartilhar este blog. Obrigado e tenha um ótimo dia.