Oracle PL/SQL Inserir, Atualizar, Excluir e Selecionar em [Exemplo]

⚡ Resumo Inteligente

instruções SQL dentro Oracle PL/SQL lida com todas as tarefas de manipulação de dados, permitindo que um bloco insira, atualize, exclua e selecione linhas diretamente. Os comandos INSERT, UPDATE, DELETE e SELECT INTO movem e recuperam dados dentro do banco de dados.

  • ⚙️ Comandos DML: INSERT, UPDATE, DELETE e SELECT INTO executam todas as tarefas de manipulação de dados dentro de um bloco PL/SQL.
  • ➕ Inserção de dados: O comando INSERT INTO adiciona linhas a partir de valores explícitos ou diretamente de outra tabela usando um comando SELECT.
  • 🔄 Atualização de dados: O comando UPDATE com SET altera os valores das colunas, enquanto uma cláusula WHERE opcional limita as linhas afetadas.
  • 🗑️ Exclusão de dados: O comando DELETE remove os registros correspondentes e a omissão da cláusula WHERE limpa a tabela inteira.
  • 🎯 Selecione em: A consulta SELECT INTO deve retornar exatamente uma linha, ou Oracle Gera erros NO_DATA_FOUND ou TOO_MANY_ROWS.
  • 🤖 Assistência de IA: Assistentes de IA, como o GitHub Copilot, elaboram rascunhos de blocos DML e sinalizam a ausência de uma cláusula WHERE ou COMMIT.

Oracle PL/SQL Insert Update Delete Select Into

Transações DML em PL/SQL

DML significa Linguagem de Manipulação de Dados, o grupo de linguagens de programação que utiliza linguagens de programação para manipular dados. SQL comandos que alteram os dados armazenados em uma tabela. Dentro de um Bloco PL/SQLEsses comandos executam o trabalho de manipulação, enquanto o PL/SQL fornece a lógica subjacente. O DML lida com as operações abaixo.

  • Inserção de dados
  • Atualização de dados
  • Exclusão de dados
  • Seleção de Dados

Em PL/SQL, a manipulação de dados é realizada somente por meio de comandos SQL.

Inserção de dados

Em PL/SQL, as linhas são adicionadas a uma tabela com o comando SQL INSERT INTO. Este comando recebe como entrada o nome da tabela, as colunas de destino e os valores das colunas, e então insere o valor na tabela base.

O comando INSERT também pode obter valores diretamente de outra tabela usando uma instrução SELECT, em vez de fornecer os valores de cada coluna. Por meio de uma instrução SELECT, é possível inserir de uma só vez tantas linhas quantas a tabela de origem contiver.

Sintaxe:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
VALUES(<value1>,<value2>,...,<value_n>);
END;

A sintaxe acima mostra o comando INSERT INTO. O nome da tabela e os valores são campos obrigatórios, enquanto os nomes das colunas são opcionais quando a instrução INSERT fornece valores para todas as colunas da tabela. A palavra-chave VALUES é obrigatória quando os valores são fornecidos separadamente, como mostrado acima.

Sintaxe:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
SELECT <column1>,<column2>,...,<column_n> FROM <table_name2>;
END;

Esta segunda forma de INSERT INTO extrai os valores diretamente de Utilizando o comando SELECT. A palavra-chave VALUES não deve estar presente aqui, pois os valores não são fornecidos separadamente.

Atualização de dados

Atualizar dados significa alterar o valor de uma coluna em uma linha existente. Isso é feito com a instrução UPDATE, que recebe como entrada o nome da tabela, o nome da coluna e o novo valor, e atualiza os dados.

Sintaxe:

BEGIN
UPDATE <table_name>
SET <column1>=<value1>,<column2>=<value2>,<column_n>=<value_n>
WHERE <condition that uniquely identifies the record that needs to be updated>;
END;

A sintaxe acima mostra a instrução UPDATE. A palavra-chave SET instrui o mecanismo PL/SQL a atualizar a coluna com o valor fornecido. A cláusula WHERE é opcional; se não for fornecida, o valor da coluna mencionada será atualizado em toda a tabela.

Exclusão de dados

A exclusão de dados significa remover um registro completo da tabela do banco de dados. O comando DELETE é usado para essa finalidade.

Sintaxe:

BEGIN
DELETE FROM <table_name>
WHERE <condition that uniquely identifies the record that needs to be deleted>;
END;

A sintaxe acima mostra o comando DELETE. A palavra-chave FROM é opcional e, com ou sem a cláusula FROM, o comando se comporta da mesma maneira. A cláusula WHERE também é opcional; se não for fornecida, a tabela inteira será esvaziada.

Seleção de Dados

A projeção de dados, ou busca de dados, significa recuperar os dados necessários da tabela do banco de dados. Isso é feito com o comando SELECT juntamente com a cláusula INTO. O comando SELECT busca os valores do banco de dados e a cláusula INTO atribui esses valores às variáveis ​​locais do bloco PL/SQL.

Os pontos abaixo devem ser considerados ao usar uma instrução SELECT com INTO:

  • Uma instrução SELECT deve retornar apenas um registro ao usar a cláusula INTO, pois uma variável só pode armazenar um valor. Se o SELECT retornar mais de uma linha, o exceção TOO_MANY_ROWS é gerado.
  • A instrução SELECT atribui o valor à variável na cláusula INTO, portanto, precisa de pelo menos um registro para preencher o valor. Se não encontrar nenhum registro, a exceção NO_DATA_FOUND será lançada.
  • O número de colunas e seus tipos de dados na cláusula SELECT deve corresponder ao número de variáveis ​​e seus tipos de dados na cláusula INTO.
  • Os valores são buscados e preenchidos na mesma ordem mencionada na instrução.
  • A cláusula WHERE é opcional e permite que você defina mais restrições sobre os registros que serão recuperados.
  • Uma instrução SELECT pode ser usada na condição WHERE de outras instruções DML para definir os valores das condições.
  • Uma instrução SELECT usada dentro de instruções INSERT, UPDATE ou DELETE não deve ter uma cláusula INTO, pois ela não preenche nenhuma variável nesses casos.

Sintaxe:

BEGIN
SELECT <column1>,...,<column_n> INTO <variable1>,...,<variable_n>
FROM <table_name>
WHERE <condition to fetch the required records>;
END;

A sintaxe acima mostra o comando SELECT-INTO. A palavra-chave FROM é obrigatória e identifica a tabela da qual os dados precisam ser obtidos. A cláusula WHERE é opcional; se não for fornecida, os dados de toda a tabela serão obtidos.

1 exemplo: Neste exemplo, veremos como realizar operações DML em PL/SQL. Inseriremos os quatro registros abaixo na tabela emp.

EMP_NAME EMP_NO SALÁRIO MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
AAAA 1002 10000 BBB
ZZZ 1003 7500 BBB

Em seguida, atualizaremos o salário de 'XXX' para 15000, excluiremos o registro do funcionário 'ZZZ' e, finalmente, projetaremos os detalhes do funcionário 'XXX'.

A captura de tela abaixo mostra o bloco PL/SQL completo usado neste exemplo.

Oracle Bloco PL/SQL executando operações de inserção, atualização, exclusão e seleção na tabela emp.

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER;
l_manager VARCHAR2(250);
BEGIN
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('BBB',1000,25000,'AAA');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('ZZZ',1003,7500,'BBB');
COMMIT;
Dbms_output.put_line('Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line('Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT;
Dbms_output.put_line('Values Deleted');
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';
Dbms_output.put_line('Employee Detail');
Dbms_output.put_line('Employee Name:'||l_emp_name);
Dbms_output.put_line('Employee Number:'||l_emp_no);
Dbms_output.put_line('Employee Salary:'||l_salary);
Dbms_output.put_line('Employee Manager Name:'||l_manager);
END;
/

Saída:

Values Inserted
Values Updated
Values Deleted
Employee Detail
Employee Name:XXX
Employee Number:1001
Employee Salary:15000
Employee Manager Name:BBB

Code Explicação:

  • Code linhas 2-5: Declarando as variáveis.
  • Code linhas 7-14: Inserindo os registros na tabela emp.
  • Code linha 15: Confirmando as transações de inserção.
  • Code linhas 17-19: Atualizando o salário do funcionário 'XXX' para 15000.
  • Code linha 20: Confirmando a transação de atualização.
  • Code linha 22: Excluindo o registro de 'ZZZ'.
  • Code linha 23: Confirmando a transação de exclusão.
  • Code linha 25: Selecionando o registro de 'XXX' e preenchendo as variáveis ​​l_emp_name, l_emp_no, l_salary e l_manager.
  • Code linhas 26-30: Exibindo os valores dos registros obtidos.

Perguntas Frequentes

Não. O PL/SQL estático não pode executar DDL diretamente. Construa a instrução como uma string e execute-a com EXECUTAR IMEDIATAMENTE, que lida com as operações CREATE, ALTER e DROP em tempo de execução.

Uma instrução SELECT INTO deve retornar exatamente uma linha. Para ler várias linhas, use um operador explícito. cursor com um loop FETCH ou BULK COLLECT em uma coleção.

DELETE é uma operação DML: remove as linhas selecionadas com uma cláusula WHERE e pode ser revertida. TRUNCATE é uma operação DDL: apaga todas as linhas instantaneamente, confirma automaticamente as alterações e não pode ser desfeita.

Sim. As alterações de INSERIR, ATUALIZAR e EXCLUIR permanecem na sua sessão até que você as cancele. COMPRARPL/SQL não realiza commits automáticos. Use COMMIT para salvar ou ROLLBACK para descartar.

O comando MERGE realiza um upsert — atualiza as linhas que correspondem a uma condição de junção e insere as que não correspondem — em uma única instrução, em vez de usar comandos UPDATE e INSERT separados.

A cláusula RETURNING INTO captura os valores das colunas das linhas afetadas por um INSERT, UPDATE ou DELETE e os armazena em variáveis, evitando uma consulta SELECT adicional para ler os dados alterados.

Sim. Travas deslizantes portáteis Copiloto do GitHub O programa elabora blocos INSERT, UPDATE, DELETE e SELECT INTO a partir de um breve comentário, sugere variáveis ​​de ligação e completa listas de colunas, embora você deva revisar a lógica primeiro.

Assistentes de IA examinam o DML em busca de cláusulas WHERE ausentes, COMMITs não executados e concatenações inseguras, sugerindo correções e explicando os erros. Essa revisão por aprendizado de máquina detecta alterações arriscadas antes que cheguem à produção.

Resuma esta postagem com: