o Que é SQL Dinâmico?

SQL dinâmico é uma metodologia de programação para gerar e executar declarações em tempo de execução. Ele é usado principalmente para escrever os programas de propósito geral e flexível onde as declarações SQL serão criadas e executadas em tempo de execução com base no requisito.,

neste tutorial, você vai aprender

  • Formas de escrever SQL dinâmico
  • NDS (Nativo SQL Dinâmico) – Execute Immediate
  • DBMS_SQL para SQL Dinâmico

Formas de escrever SQL dinâmico

PL/SQL fornece duas maneiras para escrever SQL dinâmico

  1. NDS – Nativo SQL Dinâmico
  2. DBMS_SQL

NDS (Nativo SQL Dinâmico) – Execute Immediate

Nativo SQL Dinâmico é o modo mais fácil de escrever SQL dinâmico. Ele usa o comando ‘executar imediatamente’ para criar e executar o SQL em tempo de execução., Mas para usar desta forma, o tipo de dados e o número de variáveis que devem ser usadas em um tempo de execução precisam ser conhecidos antes. Ele também dá melhor desempenho e menos complexidade quando comparado a DBMS_SQL.

sintaxe

EXECUTE IMMEDIATE(<SQL>)
  • a sintaxe acima mostra executar comando imediato.
  • cláusula em é opcional e usado apenas se o SQL dinâmico contiver uma instrução selecionada que obtém os valores. O tipo de variável deve corresponder ao tipo de variável da instrução select.,
  • A cláusula que utiliza é facultativa e utilizada apenas se a SQL dinâmica contiver qualquer variável de encadernação.

exemplo 1: Neste exemplo, vamos obter os dados da tabela emp para emp_no ‘1001’ usando a instrução NDS.

Saída

Employee Name : XXX Employee Number: 1001 Salary: 15000 Manager ED: 1000

Explicação do Código:

DBMS_SQL para SQL Dinâmico

PL/SQL fornecem a DBMS_SQL pacote que permite que você a trabalhar com SQL dinâmico. O processo de criação e execução do SQL dinâmico contém o seguinte processo.,

  • CURSOR aberto: o SQL dinâmico irá executar da mesma forma que um cursor. Assim, para executar a instrução SQL, devemos abrir o cursor.
  • processar SQL: o próximo passo é processar o SQL dinâmico. Este processo irá apenas verificar a sintaxe e manter a consulta pronta para executar.
  • BIND valores variáveis: o próximo passo é atribuir os valores das variáveis de ligação, se existir.
  • DEFINE coluna: o próximo passo é definir a coluna usando as suas posições relativas na instrução seleccionar.
  • EXECUTE: o próximo passo é executar a consulta processada., valores
  • obtenção: o próximo passo é obter os valores executados.
  • fechar o CURSOR: logo que os resultados sejam obtidos, o cursor deverá ser fechado.

exemplo 1: Neste exemplo, vamos obter os dados da tabela emp_no ‘1001’ usando a instrução DBMS_SQL.

Saída

Employee Name:XXX Employee Number:1001 Salary:15000 Manager ID:1000

Explicação do Código:

  • linha de Código 1-9: declaração de Variável.,linha de código 10: emoldurar a declaração SQL.
  • linha de código 11: abrir o cursor usando DBMS_SQL.OPEN_CURSOR. Irá devolver o ID do cursor que está aberto.
  • linha de código 12: após a abertura do cursor, o SQL é processado.
  • code line 13:Bind variable ‘1001’ is assigning to the cursor id instead’: empno’.
  • linha de código 14-17: definir o nome da coluna com base na sua posição relativa na declaração SQL. No nosso caso, a posição relativa é (1) emp_name, (2) emp_no (3) salário (4) manager. Portanto, com base nesta posição, estamos a definir a variável alvo.,
  • linha de código 18: executar a consulta usando DBMS_SQL.EXECUTAR. Devolve o número de registos processados.
  • linha de código 19-33: obter os registos usando um loop e mostrando o mesmo.linha de código 20: DBMS_SQL.O FETCH_ cows irá obter um registo das linhas processadas. Pode ser chamado repetidamente para obter todas as linhas. Se não conseguir obter as linhas, irá retornar 0, saindo assim do loop.

resumo

nesta secção, discutimos o SQL dinâmico e as formas de executar o SQL dinâmico., Também vimos os diferentes passos na execução do SQL dinâmico de ambas as maneiras. Nós também vimos os exemplos em que o mesmo cenário é tratado em ambas as maneiras NDS e DBMS_SQL para executar a execução em tempo de execução.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *