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.

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.
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.

