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.

