Você está na página 1de 57

W E L L I N G T O N C O S TA | Banco de Dados Avançado

UNIDADE 2 - PROGRAMANDO EM BD
TÓPICO 2 – PL/SQL
 PROGRAMAÇÃO DE BANCO DE DADOS

TÓPICO 2 Vamos relembrar...

PL/SQL
O que é SQL?
 PROGRAMAÇÃO DE BANCO DE DADOS

A linguagem SQL (Structured Query Language) é a base para utilização


TÓPICO 2 de Bancos de Dados relacionais. Com a utilização dos comandos básicos
(INSERT, DELETE, UPDATE e SELECT) pode-se resolver a maior parte dos
problemas relacionados à manutenção e extração de dados no Banco de
PL/SQL Dados. Com o SQL é possível criar as estruturas básicas de
armazenamento, como tabelas e índices. Também há comandos
específicos da linguagem para o controle e a segurança relacionados a
um Banco de Dados. Em princípio, os comandos SQL são divididos em:

• DDL (Data Definition Language) ou Linguagem de Definição de Dados.


• DML (Data Manipulation Language) ou Linguagem de Manipulação de
Dados.
• DQL (Data Query Language) ou Linguagem de Recuperação de Dados.
• DCL (Data Control Language) ou Linguagem de Controle de Dados.
 PROGRAMAÇÃO DE BANCO DE DADOS

O SQL tem sido aprimorado ao longo do tempo. Duas entidades (ANSI –


TÓPICO 2 American National Standards Institute e ISO – International Standards
Organization) vêm, desde 1986, publicando padrões de especificação da
linguagem SQL.
PL/SQL
Vamos discutir como abordar e tirar o máximo de proveito desta
linguagem que é extremamente importante para todos os profissionais
de Banco de Dados. Os principais tópicos que serão de interesse
envolvem:

• Fundamentos da linguagem SQL.


• Melhoria no desempenho de consultas.
• Aplicação de funções e comandos em buscas.
 PROGRAMAÇÃO DE BANCO DE DADOS

Os comandos da linguagem SQL são muito poderosos, mas


TÓPICO 2 normalmente consegue-se melhorar o desempenho das aplicações
através da programação do Banco de Dados.

PL/SQL
Ao desenvolver módulos que sejam executados diretamente no
servidor, diminui-se o tráfego de informações na rede, esconde-se boa
parte das estruturas das tabelas e agiliza-se o processamento e retorno
das mensagens. Internamente, o Banco de Dados possui mecanismos
integrados que permitem unir as estruturas tradicionais de programação
com os comandos SQL.
 PROGRAMAÇÃO DE BANCO DE DADOS

A programação em banco de dados refere-se à prática de escrever


TÓPICO 2 código para manipular e gerenciar dados armazenados em um banco de
dados. Existem várias abordagens e tecnologias para programar em
banco de dados, e a escolha depende do sistema de gerenciamento de
PL/SQL banco de dados (SGBD) específico que está sendo utilizado. Vamos
explorar algumas das principais áreas relacionadas à programação em
banco de dados:

• Linguagens de Consulta:
• SQL (Structured Query Language): É a linguagem padrão para
interação com bancos de dados relacionais. SQL permite a execução
de operações como SELECT, INSERT, UPDATE e DELETE para recuperar,
adicionar, modificar e excluir dados em tabelas.
 PROGRAMAÇÃO DE BANCO DE DADOS

• Procedimentos Armazenados e Funções:


TÓPICO 2 • PL/SQL (Oracle): Para o Oracle Database, o PL/SQL é uma extensão
procedural da SQL que permite a criação de procedimentos
armazenados (stored procedures) e funções armazenadas. Esses
PL/SQL blocos de código podem ser armazenados no banco de dados e
chamados por aplicativos ou outros blocos PL/SQL.

• Triggers (Gatilhos):
• PL/SQL (Oracle): PL/SQL é comumente utilizado para escrever triggers
que são acionados automaticamente em resposta a eventos
específicos no banco de dados.
 SQL | PL/SQL

Qual a diferença?

TÓPICO 2
PL/SQL
 SQL | PL/SQL

SQL (Structured Query Language) e PL/SQL (Procedural


Language/Structured Query Language) são duas linguagens distintas,
TÓPICO 2 mas relacionadas, utilizadas no contexto de bancos de dados
relacionais, especialmente no Oracle Database.
PL/SQL
 SQL | PL/SQL

SQL (Structured Query Language) - Natureza Declarativa:

TÓPICO 2
SQL é uma linguagem declarativa, o que significa que você especifica o
que deseja obter, mas não como alcançar isso. Você descreve a lógica do
PL/SQL que você quer, e o sistema de gerenciamento de banco de dados (SGBD)
decide como executar a consulta.

PL/SQL (Procedural Language/Structured Query Language) - Natureza


Procedural:

PL/SQL é uma extensão procedural da SQL. Ele permite a inclusão de


blocos de código procedural dentro do SQL. Assim, você pode escrever
procedimentos, funções, gatilhos e blocos anônimos que contêm lógica
de programação procedural.
 SQL | PL/SQL

Sql:
• Manipulação de Dados: SQL é principalmente usado para manipular
TÓPICO 2 dados em bancos de dados relacionais. Inclui comandos como SELECT
(consulta), INSERT (inserção), UPDATE (atualização), DELETE (exclusão)
PL/SQL e outros.
• Operações em Conjuntos: SQL é projetada para realizar operações em
conjuntos de dados. As consultas SQL geralmente envolvem seleção,
projeção, junção e outras operações em conjuntos de registros.

Pl/sql:
Lógica de Negócios e Controle de Fluxo: PL/SQL é usado para
implementar lógica de negócios, procedimentos armazenados, funções
e gatilhos diretamente no banco de dados. Ele inclui estruturas de
controle de fluxo, loops, variáveis, manipulação de exceções, entre
outros elementos comuns em linguagens de programação procedurais.
 CONCEITOS BÁSICOS

TÓPICO 2
PL/SQL
 Regras Gerais:

• Valores duplicados não são aceitos em uma chave primária.


TÓPICO 2 • Lista resumida dos principais objetos do Banco de Dados:

PL/SQL
 Regras Gerais:

• Os comandos SQL, SQL*Plus e PL/SQL são usados para acessar e tratar


TÓPICO 2 dados armazenados em um Banco de Dados Oracle.

PL/SQL
 PLSQL – para que serve ?

Ele serve para várias finalidades relacionadas à programação e


TÓPICO 2 manipulação de dados em bancos de dados. Algumas das principais
finalidades e características do PL/SQL incluem:

PL/SQL
• Procedimentos e Funções Armazenados:
• Permite a criação de procedimentos armazenados (stored
procedures) e funções armazenadas. Esses são blocos de código
reutilizáveis que podem ser chamados por aplicativos, outras
stored procedures ou funções.

• Triggers (Gatilhos):
• Permite a criação de gatilhos (triggers) que são automaticamente
acionados em resposta a eventos específicos no banco de dados,
como inserções, atualizações ou exclusões de dados.
 PLSQL – para que serve ?

• Controle de Transações:
TÓPICO 2 • Oferece suporte ao controle de transações usando as instruções
COMMIT e ROLLBACK, garantindo a consistência e a integridade
dos dados.
PL/SQL
• Manipulação de Exceções:
• Fornece uma estrutura robusta para tratamento de exceções e
erros durante a execução do código. Isso é importante para lidar
com situações inesperadas e garantir a robustez do código.

• Programação em Blocos Anônimos:


• Permite a criação de blocos anônimos, que são conjuntos de
instruções PL/SQL sem um nome associado. Isso é útil para
executar código diretamente no banco de dados.
 PLSQL – para que serve ?

• Manipulação de Dados:
TÓPICO 2 • Facilita a manipulação de dados usando instruções SQL
incorporadas em blocos de código PL/SQL. Isso inclui operações
como SELECT, INSERT, UPDATE e DELETE.
PL/SQL
• Integração com Linguagens de Programação:
• Pode ser integrado com linguagens de programação como Java,
C#, Python, entre outras. Isso permite o desenvolvimento de
aplicativos que combinam a lógica de negócios em PL/SQL com a
interface do usuário em outras linguagens.
• Segurança e Controle de Acesso:
• Ajuda na implementação de regras de segurança e controle de
acesso aos dados no banco de dados.
• Otimização de Desempenho:
• Oferece recursos para otimizar o desempenho das consultas e
operações no banco de dados, como o uso eficiente de índices e
planos de execução.
 PLSQL

• A linguagem PL/SQL é uma extensão à linguagem SQL, portanto, todos


TÓPICO 2 os comandos SQL podem ser utilizados em PL/SQL. O PL/SQL é uma
linguagem procedural e estruturada, com hierarquia de comandos e
fluxo linear de execução.
PL/SQL
• Em uma linguagem procedural, um programa é estruturado como
uma série de procedimentos, funções ou rotinas, cada um contendo
uma sequência de instruções a serem executadas em ordem. Esses
procedimentos podem conter variáveis, estruturas de controle de
fluxo (como loops e condicionais), chamadas de função e outras
construções típicas de programação.
 PLSQL

• O Banco de Dados possui mecanismos próprios que podem ser


TÓPICO 2 utilizados em favor do desenvolvedor. Cada banco de dados possui um
conjunto específico de comandos que definem a linguagem de
programação do Banco de Dados.
PL/SQL
• No caso do Oracle, a linguagem é o PL/SQL, o SQL Server possui o
Transact-SQL, o DB2 possui sua própria linguagem de programação, o
PostGreSQL possui diversas extensões que podem ser utilizadas como
linguagem de programação e o MySQL lançou sua mais recente versão
com a possibilidade de programar o servidor.

• Cada Banco de Dados é único sob este aspecto, mas todos trabalham
sobre os mesmos conceitos. É possível criar módulos programáveis,
como funções, procedimentos, objetos, pacotes, gatilhos etc. Em
todos os casos, há um engine responsável pela integração e execução
dos módulos no servidor de Banco de Dados.
 VANTAGENS DO PL/SQL

TÓPICO 2
PL/SQL
 ESTRUTURA DE UM BLOCO PL/SQL

Um bloco PL/SQL é basicamente composto de uma área de declaração,


TÓPICO 2 uma área de comandos e uma área de tratamento de exceções. Todo e
qualquer programa escrito em PL/SQL deve sempre obedecer a uma
estrutura de blocos de identação, hierarquicamente definidos:
PL/SQL
DECLARE
‘Declarações’
BEGIN
‘Estruturas executáveis e outros blocos PL/SQL’
EXCEPTION
‘Tratamento de exceções”
END;
 ESTRUTURA DE UM BLOCO PL/SQL
Declarações
Local onde são especificados os dados utilizados no bloco PL/SQL. Os
TÓPICO 2 dados podem ser:

PL/SQL - Variáveis – Constantes – Cursores – Exceções – Estruturas – Tabelas

Todo objeto que for referenciado pelos comandos PL/SQL deve


pertencer à base Oracle ou estar declarado na seção de declaração.

Estruturas executáveis e outros blocos PL/SQL


Local onde os comandos PL/SQL estruturados de maneira lógica são
colocados. Ficam entre o BEGIN e o END.
 ESTRUTURA DE UM BLOCO PL/SQL

TÓPICO 2 Tratamento de exceções

PL/SQL Exceções são todos os erros e imprevistos que podem ocorrer durante a
execução de um bloco PL/SQL. Quando o erro ou imprevisto ocorre, o
PL/SQL abandona a área de comandos e procura na área de exceções o
tratamento para a falha ocorrida.

Esta sessão pode ser omitida, sendo que o programa é abortado em


caso de erro.
 ESCOPO DE OBJETOS EM PL/SQL

TÓPICO 2
PL/SQL
 VARIÁVEIS

Objetos que podem armazenar valores temporariamente, podendo ser


TÓPICO 2 atualizadas a qualquer momento. Antes de utilizadas, as variáveis
deverão ser declaradas na seção DECLARE.
Sintaxe:
PL/SQL
<nome_variável> <tipo> (<tamanho>[,decimais>]);

OBS.: <tipo> é o tipo de dados que será armazenado na variável, por


exemplo, CHAR, NUMBER, DATE, BOOLEAN (True ou False).
ATRIBUIÇÃO DE VALORES ÀS VARIÁVEIS
Para associar um valor a uma variável, utiliza-se o comando de
atribuição ‘:=‘ , e finaliza-se com o ponto e vírgula.

Ex.: A:=2;
B:=to_number(C);
 VARIÁVEIS

TÓPICO 2 Pode-se também utilizar comando SQL para atribuir valores a variáveis.
Em PL/SQL, todo o comando SELECT pede a cláusula INTO para associar
PL/SQL valores de colunas da base Oracle a variáveis PL/SQL.

Sintaxe:
SELECT colunas
INTO variáveis
FROM tabelas
WHERE condições
etc.
OBS.: Para cada coluna selecionada deve existir uma variável associada.
A coluna e a variável devem ser de tipos compatíveis.
 VARIÁVEIS
A cláusula INTO é frequentemente utilizada em linguagens de
programação procedural, como PL/SQL, para recuperar valores
resultantes de uma consulta ou operação de atribuição e armazená-los
TÓPICO 2 em variáveis.
Recuperação de Dados em PL/SQL:
PL/SQL Em PL/SQL, ao executar uma consulta que retorna um único valor ou
uma única linha, você pode usar a cláusula INTO para atribuir esse valor
a uma variável. Aqui está um exemplo:
 VARIÁVEIS

TÓPICO 2
PL/SQL

Neste exemplo, a cláusula INTO é usada para atribuir o valor da coluna


Nome do funcionário com ID igual a 1 à variável v_nome.
 CONTROLE ITERATIVO

LOOP
TÓPICO 2 O comando LOOP é utilizado para executar uma relação de comandos
até que a condição definida na saída se torne verdadeira.
PL/SQL Sintaxe:
LOOP
Relação_de_Comandos
END LOOP;
Para interromper a execução de um loop, utiliza-se o comando EXIT.
Este comando desvia o fluxo do programa para a primeira instrução
após o próximo END LOOP. Um comando EXIT não pode ser utilizado
fora de loops.
Sintaxe:
EXIT [WHEN <condição>];
 CURSORES

São estruturas criadas para selecionar várias linhas de resultado, ou


TÓPICO 2 seja, são comandos select que podem retornar mais de uma linha de
resultado (ou nenhuma). Essa flexibilidade não é permitida através da
sintaxe select ... into ... Dessa forma, a utilização de cursores garante a
PL/SQL não ocorrência dos erros ORA-01403: no data found e ORA-01422: exact
fetch returns more than requested number of rows.

CURSORES EXPLÍCITOS
São cursores utilizados para a manipulação de buscas que retornam
mais de uma linha de resultado. Estes cursores devem ser declarados na
seção DECLARE.
 CURSORES

Sintaxe:
TÓPICO 2
CURSOR <nome cursor> IS
PL/SQL <comando SELECT qualquer>
Antes de manipular um cursor, ele deve ser aberto através do comando
OPEN.

Sintaxe:

OPEN <nome cursor>


 TRATAMENTO DE EXCEÇÕES

Exceção é qualquer problema ocorrido que impossibilita o Banco de


TÓPICO 2 Dados de executar determinada instrução no bloco PL/SQL. A instrução
pode ser um comando SQL ou uma instrução de atribuição. As exceções
podem ser pré-definidas ou definidas pelo usuário.
PL/SQL
Quando um erro ocorre, o fluxo é desviado para a seção EXCEPTION do
bloco PL/SQL correspondente, onde a exceção deve ser tratada. Se a
seção EXCEPTION não existir, a mensagem de erro é devolvida para o
usuário. As exceções podem ser disparadas através da instrução RAISE.

Sintaxe:
RAISE <nome da exceção>
No caso de exceções definidas pelo usuário, a exceção deve ser uma
variável declarada na seção DECLARE, como sendo do tipo EXCEPTION.
Caso seja um erro do tipo ORA, pode ser associado ao erro Oracle
através da declaração PRAGMA EXCEPTION_INIT.
 TRATAMENTO DE EXCEÇÕES

TÓPICO 2
PL/SQL
 TRATAMENTO DE EXCEÇÕES

O programa também pode provocar interrupção da execução através do


TÓPICO 2 comando raise_application_error.

PL/SQL Sintaxe:
RAISE_APPLICATION_ERROR(código_do_erro, mensagem);

Código do erro é o código a ser utilizado para o erro definido pelo


usuário. O Oracle reserva os códigos de 20000 até 20999 para esse
propósito. O erro será mostrado como qualquer outra mensagem de
erro do dos.
 TRATAMENTO DE EXCEÇÕES

TÓPICO 2
PL/SQL
 EXEMPLO COM VARIÁVEL

Crie um programa em PL/SQL que utiliza uma variável para realizar uma
TÓPICO 2 pergunta ao usuário e, com base na resposta, fornece uma resposta
personalizada. Neste caso, vamos solicitar ao usuário que insira um número e,
em seguida, verificar se o número é par ou ímpar.
PL/SQL

Como você faria ?


 EXEMPLO COM VARIÁVEL

TÓPICO 2
PL/SQL
 EXEMPLO COM VARIÁVEL

• Declaramos uma variável v_numero para armazenar o número


inserido pelo usuário.
TÓPICO 2
• Utilizamos DBMS_OUTPUT.PUT para exibir uma mensagem
PL/SQL pedindo ao usuário que insira um número.

• Utilizamos ACCEPT para ler o número inserido pelo usuário e


armazená-lo na variável v_numero.

• Utilizamos uma estrutura condicional IF para verificar se o número


é par ou ímpar usando a função MOD.

• Exibimos uma mensagem indicando se o número é par ou ímpar


usando DBMS_OUTPUT.PUT_LINE.
 EXEMPLO COM CONTROLE ITERATIVO

Crie em PL/SQL, um programa que utiliza um controle iterativo para exibir os


TÓPICO 2 números de 1 a 5. Neste caso, faça uso do loop FOR para iterar sobre os
números e exibi-los.

PL/SQL

Como você faria ?


 EXEMPLO COM CONTROLE ITERATIVO

Crie em PL/SQL, um programa que utiliza um controle iterativo para exibir os


TÓPICO 2 números de 1 a 5. Neste caso, faça uso do loop FOR para iterar sobre os
números e exibi-los.

PL/SQL
 EXEMPLO COM CONTROLE ITERATIVO

Crie em PL/SQL, um programa que utiliza um controle iterativo para exibir os


TÓPICO 2 números de 1 a 5. Neste caso, faça uso do loop FOR para iterar sobre os
números e exibi-los.

PL/SQL
• Utilizamos uma variável v_numero para armazenar o valor durante
cada iteração do loop.

• Utilizamos um loop FOR para iterar sobre os números de 1 a 5. A


variável v_numero assume automaticamente cada valor no
intervalo durante cada iteração.

• Utilizamos DBMS_OUTPUT.PUT_LINE para exibir o número na


saída.
 EXEMPLO COM TRATAMENTO DE EXCEÇÕES

Crie um programa em PL/SQL que inclui tratamento de exceções. Um bloco que


TÓPICO 2 solicita ao usuário que insira um número, e o programa irá verificar se é um
número válido. Se o usuário inserir algo que não seja um número, uma exceção
será tratada e uma mensagem apropriada será exibida.
PL/SQL

Como você faria ?


 EXEMPLO COM TRATAMENTO DE EXCEÇÕES

DECLARE
v_numero INT;

BEGIN
-- Solicitar ao usuário que insira um número
DBMS_OUTPUT.PUT('Insira um número: ');

-- Tratar exceção se o usuário não inserir um número


BEGIN
ACCEPT v_numero NUMBER FORMAT '9999';
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('Erro: Por favor, insira um número válido.');
v_numero := NULL; -- Atribuir um valor nulo à variável em caso de erro
END;

-- Verificar se o número é par ou ímpar


IF v_numero IS NOT NULL THEN
IF MOD(v_numero, 2) = 0 THEN
DBMS_OUTPUT.PUT_LINE('O número ' || v_numero || ' é par.');
ELSE
DBMS_OUTPUT.PUT_LINE('O número ' || v_numero || ' é ímpar.');
END IF;
END IF;
END;
 EXEMPLO COM TRATAMENTO DE EXCEÇÕES

• Utilizamos uma variável v_numero para armazenar o número inserido


TÓPICO 2 pelo usuário.

• Utilizamos DBMS_OUTPUT.PUT para exibir uma mensagem pedindo ao


PL/SQL
usuário que insira um número.

• Utilizamos um bloco BEGIN...EXCEPTION...END para tratar possíveis


exceções durante a leitura do número. Se o usuário inserir algo que não
seja um número, a exceção VALUE_ERROR será tratada, uma
mensagem será exibida, e a variável v_numero será atribuída como
nula.

• Utilizamos uma estrutura condicional IF para verificar se a variável


v_numero não é nula antes de realizar a verificação par ou ímpar.
 EXEMPLO COM CURSORES

Crie um programa em PL/SQL que utiliza um cursor para percorrer registros


de uma tabela e exibir informações. Utilize um bloco anônimo que faz uso
TÓPICO 2 de um cursor para percorrer registros de uma tabela fictícia chamada
‘Funcionarios’ e exibir seus nomes.
PL/SQL

Como você faria ?


 EXEMPLO COM CURSORES

TÓPICO 2
PL/SQL
 EXEMPLO COM CURSORES

• Declaramos uma variável v_nome para armazenar o nome do funcionário


durante cada iteração do loop.
TÓPICO 2 • Declaramos um cursor c_funcionarios que seleciona os nomes da tabela
Funcionarios.
PL/SQL
• Abrimos o cursor utilizando a instrução OPEN.

• Utilizamos um loop LOOP para percorrer os registros do cursor.

• Utilizamos a instrução FETCH para obter o próximo registro do cursor e


armazenar o nome na variável v_nome.

• Utilizamos EXIT WHEN c_funcionarios%NOTFOUND para sair do loop quando


não houver mais registros.

• Exibimos o nome do funcionário utilizando DBMS_OUTPUT.PUT_LINE.

• Fechamos o cursor utilizando a instrução CLOSE.


 EXEMPLO COM CURSORES

Um bloco anônimo em PL/SQL é um conjunto de instruções PL/SQL que


é executado, mas não tem um nome associado. É uma estrutura que
TÓPICO 2 permite a execução de código ad hoc diretamente no ambiente do
banco de dados Oracle. Vamos criar um exemplo simples de um bloco
anônimo em PL/SQL:
PL/SQL

Esses blocos são úteis para realizar tarefas temporárias ou para


testar rapidamente uma lógica de programação no contexto do
banco de dados.
 PLSQL – em qual momento do projeto é utilizado?

O PL/SQL (Procedural Language/Structured Query Language) é


frequentemente utilizado em diferentes fases de um projeto de
TÓPICO 2 software, especialmente quando o sistema envolve um banco de dados
Oracle. Aqui estão alguns momentos específicos durante o ciclo de vida
do projeto nos quais o PL/SQL é comumente empregado:
PL/SQL
• Design do Banco de Dados:
• No início do projeto, durante a fase de design do banco de dados,
o PL/SQL é utilizado para criar procedimentos armazenados
(stored procedures), funções e gatilhos que implementam a
lógica de negócios diretamente no banco de dados.

• Implementação da Lógica de Negócios:


• Durante a implementação da lógica de negócios, o PL/SQL é
usado para criar procedimentos armazenados que executam
operações complexas no banco de dados. Isso pode incluir
validações, cálculos, manipulação de dados em lote, entre outras
tarefas.
PLSQL – em qual momento do projeto é utilizado?

• Geração de Relatórios:
TÓPICO 2 • Para a geração de relatórios personalizados, o PL/SQL pode ser
incorporado em consultas SQL mais avançadas para processar
dados antes de serem apresentados ao usuário. Isso permite a
PL/SQL
criação de relatórios que vão além das capacidades das consultas
SQL padrão.

• Triggers para Manutenção de Integridade:


• Durante a implementação de triggers, que são acionadores
automáticos em resposta a eventos específicos no banco de
dados. Eles são usados para manter a integridade referencial,
realizar auditoria ou automatizar tarefas.
 PLSQL – em qual momento do projeto é utilizado?

• Customizações em Sistemas de Software Empresarial:


TÓPICO 2 • Em ambientes que utilizam sistemas de software empresarial
baseados em Oracle, como o Oracle E-Business Suite, o PL/SQL é
PL/SQL frequentemente utilizado para customizações e extensões das
funcionalidades padrão do sistema.

• Manutenção e Aprimoramento Contínuos:


• Ao longo do ciclo de vida do projeto, o PL/SQL é utilizado para
manutenção contínua, correções de bugs e aprimoramentos. A
lógica de negócios no banco de dados pode ser ajustada
conforme as necessidades evoluem.
TÓPICO 2
PL/SQL
Questão 1: Procedimento Armazenado em PL/SQL

Considere uma tabela chamada Pedidos com as seguintes colunas:


TÓPICO 2 IDPedido, DataPedido, Total. Crie um procedimento armazenado em
PL/SQL chamado AtualizarTotalPedido que aceita um parâmetro
PL/SQL p_id_pedido (ID do pedido) e um parâmetro p_novo_total (novo
valor para o total do pedido). O procedimento deve atualizar o total
do pedido com base nos parâmetros fornecidos.
Questão 1: Procedimento Armazenado em PL/SQL

TÓPICO 2
PL/SQL

Este procedimento armazenado recebe o ID do pedido e o


novo total como parâmetros e atualiza o campo Total na
tabela Pedidos para o ID de pedido especificado.
“ Obrigado!
Nos vemos na
próxima unidade

Você também pode gostar