racle PL / SQL Insert, Update, Delete & Select Into [Exemplo]

Neste tutorial, aprenderemos como usar SQL em PL / SQL. O SQL é o componente real que cuida da busca e atualização dos dados no banco de dados, enquanto o PL / SQL é o componente que processa esses dados. Além disso, neste artigo, também discutiremos como combinar o SQL dentro do bloco PL / SQL.

Neste tutorial, você aprenderá-

Transações DML em PL / SQL

DML significa Linguagem de manipulação de dados . Essas instruções são usadas principalmente para realizar a atividade de manipulação. Ele 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, podemos fazer a manipulação de dados apenas usando os comandos SQL.

Inserção de Dados

Em PL / SQL, podemos inserir os dados em qualquer tabela usando o comando SQL INSERT INTO. Este comando tomará o nome da tabela, a coluna da tabela e os valores da coluna como entrada e inserirá o valor na tabela base.

O comando INSERT também pode obter os valores diretamente de outra tabela usando a instrução 'SELECT' em vez de fornecer os valores para cada coluna. Por meio da instrução 'SELECT', podemos inserir quantas linhas a tabela base contiver.

Sintaxe:

BEGIN INSERT INTO (,,...) VALUES(,...:); END;
  • A sintaxe acima mostra o comando INSERT INTO. O nome e os valores da tabela são campos obrigatórios, enquanto os nomes das colunas não são obrigatórios se as instruções de inserção tiverem valores para todas as colunas da tabela.
  • A palavra-chave 'VALUES' é obrigatória se os valores forem fornecidos separadamente, conforme mostrado acima.

Sintaxe:

BEGIN INSERT INTO (,,...,) SELECT ,,.. FROM ; END;
  • A sintaxe acima mostra o comando INSERT INTO que obtém os valores diretamente do usando o comando SELECT.
  • A palavra-chave 'VALUES' não deve estar presente neste caso, pois os valores não são fornecidos separadamente.

Atualização de dados

A atualização de dados significa simplesmente uma atualização do valor de qualquer coluna da tabela. Isso pode ser feito usando a instrução 'UPDATE'. Essa instrução usa o nome da tabela, o nome da coluna e o valor como entrada e atualiza os dados.

Sintaxe:

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

Exclusão de dados

A exclusão de dados significa excluir um registro completo da tabela do banco de dados. O comando 'DELETE' é usado para este propósito.

Sintaxe:

BEGIN DELETE FROM WHERE ; 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' é opcional. Se esta cláusula não for fornecida, a tabela inteira será excluída.

Seleção de Dados

Projeção / busca de dados significa recuperar os dados necessários da tabela do banco de dados. Isso pode ser feito usando o comando 'SELECT' com a cláusula 'INTO'. O comando 'SELECT' buscará os valores do banco de dados, e a cláusula 'INTO' atribuirá esses valores à variável local do bloco PL / SQL.

Abaixo estão os pontos que precisam ser considerados na instrução 'SELECT'.

  • A instrução 'SELECT' deve retornar apenas um registro ao usar a cláusula 'INTO', pois uma variável pode conter apenas um valor. Se a instrução 'SELECT' retornar mais de um valor, a exceção 'TOO_MANY_ROWS' será gerada.
  • A instrução 'SELECT' atribuirá o valor à variável na cláusula 'INTO', portanto, ela precisa obter pelo menos um registro da tabela para preencher o valor. Se não obtiver nenhum registro, a exceção 'NO_DATA_FOUND' é gerada.
  • O número de colunas e seus tipos de dados na cláusula 'SELECT' devem 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 que permite ter mais restrições nos registros que serão buscados.
  • A instrução 'SELECT' pode ser usada na condição 'WHERE' de outras instruções DML para definir os valores das condições.
  • A instrução 'SELECT' ao usar as instruções 'INSERT', 'UPDATE', 'DELETE' não deve ter a cláusula 'INTO' porque não preencherá nenhuma variável nesses casos.

Sintaxe:

BEGIN SELECT ,.. INTO ,. . FROM WHERE ; END;
  • A sintaxe acima mostra o comando SELECT-INTO. A palavra-chave 'FROM' é obrigatória para identificar o nome da tabela da qual os dados devem ser obtidos.
  • A cláusula 'WHERE' é opcional. Se esta cláusula não for fornecida, os dados de toda a tabela serão buscados.

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

EMP_NAMEEMP_NOSALÁRIOGERENTE
BBB100025000AAA
Xxx100110.000BBB
AAA100210.000BBB
ZZZ10037500BBB

Então vamos atualizar o salário de 'XXX' para 15000, e vamos deletar o registro de empregado 'ZZZ'. Por fim, vamos projetar os detalhes do funcionário 'XXX'.

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,managed 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(‘Emplovee Manager Name:‘||l_manager): END; /

Resultado:

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

Explicação do código:

  • Linha de código 2-5 : Declarando a variável.
  • Linha de código 7-14 : Inserindo os registros na tabela emp.
  • Linha de código 15 : Confirmando as transações de inserção.
  • Linha de código 17-19 : Atualizando o salário do funcionário 'XXX' para 15.000
  • Linha de código 20 : Confirmando a transação de atualização.
  • Linha de código 22 : Excluindo o registro de 'ZZZ'
  • Linha de código 23 : Confirmando a transação de exclusão.
  • Linha de código 25-27 : Selecionando o registro de 'XXX' e preenchendo a variável l_emp_name, l_emp_no, l_salary, l_manager.
  • Linha de código 28-32 : Exibindo o valor dos registros buscados.