PL / SQL é uma linguagem procedural que supera as deficiências enfrentadas por Linguagem de consulta estruturada . É uma extensão do SQL e podemos até usar consultas SQL sem problemas em qualquer aplicativo ou programa PL / SQL. Neste tutorial da PL / SQL, examinaremos os conceitos básicos da PL / SQL em detalhes. Os tópicos a seguir são abordados neste artigo.
- O que é PL / SQL?
- Estruturas de bloco em PL / SQL
- Variáveis PL / SQL
- Função em PL / SQL
- Procedimento PL / SQL
- Bloco Aninhado
- Declaração IF
- Declaração CASE
- Declaração de Loop
- Tratamento excepcional
O que é PL / SQL?
Significa extensão de linguagem procedural para o linguagem de consulta estruturada . A Oracle criou o PL / SQL que estende algumas limitações do SQL para fornecer uma solução mais abrangente para a construção de aplicativos de missão crítica executados no oracle .
Recursos
PL / SQL fornece a funcionalidade de uma linguagem procedural, como tomada de decisão, iteração, etc.
uso de iterador em java
Usando um único comando, o PL / SQL pode executar uma série de consultas.
Também podemos reutilizar unidades PL / SQL, como funções, gatilhos, procedimentos, etc, que são armazenados no banco de dados após a criação.
A PL / SQL também possui um bloco de tratamento de exceções que trata as exceções em PL / SQL.
A verificação extensiva de erros também é possível usando PL / SQL
Os aplicativos escritos em PL / SQL são portáveis para outro hardware e sistemas operacionais, desde que o oracle esteja operacional.
PL / SQL vs SQL
SQL | PL / SQL |
SQL é uma consulta única usada para realizar operações DDL e DML | PL / SQL é um bloco de códigos usado para definir um programa ou procedimento / função inteiro, etc. |
Não define realmente como as coisas precisam ser feitas, mas sim o que precisa ser feito | PL / SQL define como as coisas precisam ser feitas |
Ele executa uma única instrução | Ele executa um bloco de instruções de uma vez. |
SQL é usado principalmente para manipular os dados | PL / SQL, por outro lado, é usado para criar aplicativos |
Não pode conter código PL / SQL | Por ser uma extensão SQL, pode conter código SQL |
Estruturas de bloco em PL / SQL
PL / SQL normalmente organiza o código em blocos. O bloco de código sem nome é conhecido como bloco anônimo. É conhecido como bloco anônimo porque não é salvo no banco de dados oracle. Vamos dar uma olhada em um bloco anônimo em PL / SQL.
[DECLARE] instruções de declaração [BEGIN] instruções de execução [EXCEPTION] instruções de exceção END /
Olhando para o diagrama mostrado acima, podemos ver que a estrutura do bloco é dividida em quatro partes, ou seja, declaração, início, exceção e fim. Vamos tentar entender como funciona a estrutura de blocos no PL / SQL. De todas essas seções, a seção de execução é obrigatória e todas as demais são opcionais.
DECLARAR palavra-chave é usada para para a seção de declaração é usada para declarar tipos de dados e estruturas como variáveis, funções, etc.
INÍCIO palavra-chave é usada para a seção de execução. É obrigatório e contém todas as instruções que precisam ser executadas. Este bloco é onde a lógica de negócios é definida, podemos usar instruções procedurais ou SQL neste bloco.
o EXCEÇÃO palavra-chave é usada para a seção de exceção. Ele contém todas as instruções de exceção.
FIM a palavra-chave marca o final do bloco e a barra invertida ‘/’ informa a ferramenta que você está usando (Oracle Database Tool) para executar o bloco PL / SQL.
Aqui está um exemplo simples para mostrar como podemos usar o código PL / SQL.
BEGIN NULL END /
Agora que sabemos como a estrutura de blocos funciona na PL / SQL, vamos entender os vários aspectos da PL / SQL, como declaração, nomenclatura e atribuição de valores às variáveis.
Variáveis PL / SQL
A variável em PL / SQL é basicamente um nome que varia ou local de armazenamento temporário que oferece suporte a um tipo de dados específico. Vamos dar uma olhada em como podemos usar as variáveis em um programa PL / SQL.
Regras de nomenclatura de variáveis
A PL / SQL segue as seguintes regras para nomear variáveis.
A variável não pode ter mais de 31 caracteres
O nome da variável deve começar com um caractere ASCII. Como o PL / SQL diferencia maiúsculas de minúsculas, uma letra maiúscula e uma letra minúscula serão variáveis diferentes.
Após o primeiro caractere, deve haver um caractere especial ($, _) ou qualquer número.
Convenções de Nomenclatura
Use as seguintes convenções de nomenclatura listadas abaixo para usar as variáveis.
Prefixo | Tipo de dados |
v_ | VARCHAR2 |
n_ | NÚMERO |
t_ | MESA |
r_ | LINHA |
d_ | ENCONTRO |
b_ | BOLEANO |
Declaração
Vamos tentar entender como a declaração de variável é feita em PL / SQL
A declaração inclui o nome da variável seguido pelo tipo de dados e separados por um ponto e vírgula. A seguir está um exemplo para mostrar como você pode declarar uma variável em PL / SQL.
DECLARAR v_name VARCHAR (25) n_age NUMBER (3) BEGIN NULL END
Você também pode adicionar o comprimento do tipo de dados, como fizemos no exemplo acima.
Âncoras
A âncora se refere basicamente ao uso da palavra-chave% TYPE para declarar uma variável com o tipo de dados associado ao tipo de dados de uma coluna de uma coluna específica em uma tabela.
Dê uma olhada em um exemplo para entender isso. Suponha que tenhamos uma tabela EMPLOYEES, podemos usar as âncoras da seguinte maneira.
DECLARAR v_name EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /
Tarefa
A atribuição de variável é bastante fácil, podemos usar o operador de atribuição para atribuir valores a uma variável. O exemplo a seguir mostra como podemos atribuir valores a uma variável.
DECLARE v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /
Inicialização
Também podemos inicializar um valor para a variável na seção de declaração. O exemplo a seguir mostra como podemos inicializar valores para uma variável.
DECLARE v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN NULL END /
Agora que sabemos como podemos trabalhar com as variáveis, vamos tentar entender como usaremos as funções do PL / SQL.
Função em PL / SQL
Uma função em PL / SQL é basicamente um bloco nomeado que retorna um valor. Também conhecido como sub-rotina ou subprograma, a sintaxe a seguir mostra como podemos usar funções em PL / SQL.
CREATE [OR REPLACE] FUNCTION function_name [(parameter_1 [IN] [OUT] data_type, parameter_2 [IN] [OUT] data_type, parameter_N [IN] [OUT] data_type] RETURN return_data_type IS BEGIN instruções return return_data_type EXCEPTION END /
Em primeiro lugar, você deve especificar um nome de função após a palavra-chave. O nome da função deve começar com um verbo. Uma função pode ter nenhum, um ou mais parâmetros que especificamos nos parâmetros. Temos que especificar o tipo de dados de cada parâmetro explicitamente e, em seguida, vem o modo que pode ser um dos seguintes.
DENTRO - O parâmetro IN é um parâmetro somente leitura.
FORA - É um parâmetro somente gravação
IN OUT - O parâmetro IN OUT é um parâmetro de leitura e gravação.
Aqui está um exemplo simples para mostrar como usamos funções em PL / SQL.
CRIAR OU SUBSTITUIR A FUNÇÃO try_parse (iv_number IN VARCHAR2) RETURN NUMBER IS BEGIN RETURN to_number (iv_number) EXCEPTION QUANDO outros THEN RETURN NULL END
Chamando uma função
Vamos tentar chamar a função que criamos em um bloco anônimo no exemplo a seguir.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_x número n_y número n_z número BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_x) DBMS_OUTPUT.PUT_LINE (n_x) DBMS_OUT_LINE (n_x) n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /
Também podemos chamar a função em uma instrução SELECT. Agora que sabemos como podemos usar funções em PL / SQL, vamos tentar entender como trabalhamos com procedimentos em PL / SQL.
Procedimento PL / SQL
Um procedimento é basicamente um bloco que executa uma tarefa específica. Usando um procedimento, podemos envolver ou encapsular lógicas de negócios complexas e reutilizá-las na camada de aplicativo e de banco de dados.
Vamos dar uma olhada em um exemplo simples para entender como o procedimento funciona em PL / SQL
CRIAR OU SUBSTITUIR PROCEDIMENTO ajustar_salário (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent EM NUMBER) ESTÁ BEGIN - atualizar o salário do funcionário ATUALIZAR funcionários SET salário = salário + salário * in_percent / 100 WHERE funcionário_id = in_employee_id END
No exemplo acima, temos dois parâmetros, o procedimento ajusta o salário em uma determinada porcentagem e a palavra-chave UPDATE atualiza o valor nas informações de salário.
transformação de pesquisa no exemplo informatica
Cabeçalho do Procedimento
A seção antes da palavra-chave IS é chamada de cabeçalho do procedimento. A seguir estão algumas dicas com as quais você deve estar familiarizado ao trabalhar com procedimentos.
esquema - É o nome opcional do esquema ao qual o procedimento pertence.
nome - O nome do procedimento que deve começar com um verbo.
parâmetros - É a lista opcional de parâmetros.
AUTHID - Ele determina se o procedimento será executado com o privilégio do usuário atual ou do proprietário original do procedimento.
Corpo de Procedimento
Tudo o que vem depois da palavra-chave IS é chamado de corpo do procedimento. Temos as declarações de declaração, exceção e execução no corpo do procedimento. Ao contrário da função, a palavra-chave RETURN em um procedimento é usada para interromper a execução e retornar o controle ao chamador.
Chamando um procedimento
Vamos ver como podemos chamar um procedimento em PL / SQL.
EXEC procedure_name (param1, param2 & hellipparamN)
Podemos chamar os procedimentos sem parâmetros usando apenas a palavra-chave EXEC e o nome do procedimento. Agora que sabemos como podemos trabalhar com procedimentos, vamos tentar entender como os blocos aninhados são usados no PL / SQL.
Bloco Aninhado
Um bloco aninhado nada mais é que uma combinação de um ou mais blocos PL / SQL para obter melhor controle sobre a execução e manipulação excepcional do programa.
Aqui está um exemplo simples de um bloco aninhado.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID% TYPE: = & emp_id1 BEGIN DECLARE n_emp_id funcionários.employee_id% TYPE: = & emp_id2 v_name funcionários.first_name% TYPE BEGUTIN nome_do_id_emp_id_pt_br = primeiro nome do funcionário. do funcionário '|| n_emp_id ||' é '|| v_name) EXCEÇÃO QUANDO no_data_found ENTÃO DBMS_OUTPUT.PUT_LINE (' Funcionário '|| n_emp_id ||' não encontrado ') END END /
O bloco PL / SQL externo no exemplo acima é conhecido como bloco pai ou bloco delimitador, o bloco interno, por outro lado, é conhecido como bloco filho ou bloco fechado.
Não é uma grande ideia usar as variáveis com os mesmos nomes em ambos os blocos porque durante a execução a variável do bloco filho sobrescreverá a variável do bloco pai. Isso acontece porque o PL / SQL dá prioridade à variável dentro de seu próprio bloco.
Etiqueta do Bloco
Podemos superar esse problema com o rótulo de bloco que nos ajuda a fazer referências a variáveis dentro de blocos usando um rótulo.
Aqui está um exemplo simples para mostrar como podemos usar um rótulo de bloco.
<>DECLARAR ... COMEÇAR ... FIM
Usar um rótulo de bloco ajuda a melhorar a legibilidade do código, obter melhor controle e fazer referências aos blocos. Agora que sabemos como podemos trabalhar com blocos aninhados, vamos tentar entender como o IF STATEMENT funciona no PL / SQL.
Declaração IF
PL / SQL tem três DECLARAÇÕES IF
SE ENTÃO - É o IF STATEMENT mais simples se a condição for verdadeira, as declarações serão executadas, se a condição for falsa, não faz nada.
SE-ENTÃO-ELSE - Neste, a cláusula ELSE é adicionada para uma sequência alternativa de instruções.
IF-THEN-ELSEIF - Ele nos permite executar várias condições de teste em uma sequência.
Sintaxe IF-THEN
Condição IF, THEN sequência_de_instruções END IF
Sintaxe IF-THEN-ELSE
IF condição THEN seqüência_de_instruções ELSE seqüência_de_else_instruções END IF
Sintaxe IF-THEN-ELSEIF
IF condição1 THEN sequência_de_instruções1 ELSIF condição2 THEN sequência_de_instruções2 ELSE sequência_de_instruções3 END IF
Agora que concluímos o IF STATEMENT, vamos examinar a instrução CASE no PL / SQL.
Declaração CASE
A instrução CASE basicamente ajuda na execução de uma sequência de instruções com base em um seletor. Um seletor, neste caso, pode ser qualquer coisa, pode ser uma variável, função ou uma expressão simples. Aqui está um exemplo simples para mostrar a sintaxe da instrução CASE em PL / SQL.
[<>] CASO [TRUE | seletor] WHEN expressão1 THEN sequência_de_instruções1 WHEN expressão2 THEN sequência_de_instruções2 ... WHEN expressãoN THEN sequência_de_instruçõesN [ELSE sequência_de_instruçõesN + 1] END CASE [label_name]
Na sintaxe acima, após a palavra-chave CASE, vem o seletor. O PL / SQL avaliará o seletor apenas uma vez para determinar qual instrução precisa ser executada.
Seguido pelo seletor está a palavra-chave WHEN. Se a expressão satisfizer o seletor, a instrução correspondente após a palavra-chave THEN será executada.
Agora que sabemos como podemos usar uma instrução CASE, vamos tentar entender como usaremos as instruções de loop no PL / SQL.
Declaração de Loop
Uma instrução de loop em PL / SQL é uma instrução iterativa que permite que você execute uma sequência de instruções várias vezes. Aqui está um exemplo simples para mostrar a sintaxe de uma instrução de loop em PL / SQL.
LOOP sequence_of_statements END LOOP
Deve haver pelo menos uma instrução executável entre as palavras-chave LOOP e END LOOP.
Loop com instrução EXIT
javascript obter o tamanho da matriz
As instruções EXIT e EXIT when permitem que você saia do loop. A instrução EXIT WHEN termina o loop condicionalmente, enquanto EXIT termina a execução incondicionalmente.
LOOP ... SAIR QUANDO condição END LOOP
Etiqueta de loop
Um rótulo de loop é usado para qualificar o nome da variável do contador de loop quando usado em um loop aninhado. A seguir está a sintaxe de um rótulo de loop.
<>LOOP sequence_of_statements END LOOP label
Agora que sabemos como podemos usar as instruções de loop, vamos dar uma olhada nas instruções de loop while para melhor compreensão.
Instrução While Loop
Podemos usar a instrução de loop WHILE quando o número de execuções não é definido até o início da execução. A sintaxe a seguir é usada para uma instrução de loop WHILE em PL / SQL.
WHILE condição LOOP seqüência_de_instruções END LOOP
A condição na sintaxe é um valor booleano ou expressão avaliada como TRUE, FALSE ou NULL. Se a condição for TRUE, as instruções serão executadas; se for FALSE, a execução será interrompida e o controle passará para a próxima instrução executável.
Agora que sabemos como podemos usar uma instrução de loop WHILE, vamos dar uma olhada na instrução de loop FOR.
Declaração For Loop
Uma instrução de loop FOR em PL / SQL nos permite executar uma sequência de instruções por um determinado número de vezes. A seguir está a sintaxe para usar a instrução de loop FOR em PL / SQL
FOR loop_counter IN [REVERSE] lower_bound .. higher_bound LOOP sequence_of_statements END LOOP
O PL / SQL cria uma variável local loop_counter automaticamente com um tipo de dados INTEGER para o loop de forma que você não precise declará-lo explicitamente. The lowerbound..higherbound é o intervalo no qual o loop itera. Além disso, você deve ter pelo menos uma instrução executável entre as palavras-chave LOOP e END LOOP.
Agora que sabemos como podemos usar as instruções de loop em PL / SQL, vamos dar uma olhada no manuseio excepcional em PL / SQL.
Tratamento excepcional
Na PL / SQL, qualquer tipo de erro é tratado como exceção. Uma exceção pode ser tratada como uma condição especial que pode alterar ou alterar o fluxo de execução. Em PL / SQL, existem dois tipos de exceções.
Exceção do sistema - Ele é gerado pelo tempo de execução PL / SQL quando detecta um erro.
Exceção definida pelo programador - Essas exceções são definidas pelo programador em um aplicativo específico.
Definindo uma exceção
Uma exceção em PL / SQL deve ser declarada antes de ser levantada. Podemos definir a exceção usando a palavra-chave EXCEPTION como fizemos no exemplo abaixo.
EXCEPTION_NAME EXCEPTION
Para levantar uma exceção, usamos a palavra-chave RAISE.
RAISE EXCEPTION_NAME
Então era tudo sobre PL / SQL, espero que este artigo tenha ajudado você a agregar valor ao seu conhecimento. Para obter mais informações sobre SQL ou bancos de dados, você pode consultar nossa lista de leitura abrangente aqui: .
Se você deseja obter um treinamento estruturado em MySQL, consulte nosso que vem com treinamento ao vivo conduzido por instrutor e experiência em projetos da vida real. Este treinamento o ajudará a entender o MySQL em profundidade e a obter domínio sobre o assunto.
Tem alguma questão para nós? Mencione isso na seção de comentários de ” Tutorial PL / SQL ”E eu voltarei para você.