O que o sinal de dois pontos “:” faz em uma consulta SQL?
-
24-09-2019 - |
Pergunta
O que :
representa em uma consulta?
INSERT INTO MyTable (ID) VALUES (:myId)
Como ele busca o valor desejado?
Editar: Além disso, como é chamado esse sinal?Queria pesquisar no google, mas qual é o nome :
?
Solução
Outras dicas
O que significa ":" em uma consulta?
A variável de ligação.As variáveis de ligação permitem que uma única instrução SQL (seja uma consulta ou DML) seja reutilizada muitas vezes, o que ajuda na segurança (ao proibir ataques de injeção de SQL) e no desempenho (ao reduzir a quantidade de análise necessária).
Como ele busca o valor desejado?
Antes de uma consulta (ou DML) ser executada pelo Oracle, seu programa criará um cursor.Seu programa emite o SQL para ser analisado para esse cursor e, em seguida, deve vincular valores para cada variável de ligação referida pelo SQL.Como isso é feito depende do idioma.
Como é chamado esse sinal?
Dois pontos.
Esta é uma tag para um parâmetro de consulta nomeado e não faz parte da sintaxe real da consulta. A tag é substituída por algum valor especificado no código que faz a consulta antes de ser executada.
Cólon :
é usado na linguagem de consulta HQL Hibernate para significar que há um parâmetro envolvido.
Então, o que isso significa é: Sintaxe SQL:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
é o mesmo que a sintaxe HQL:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
empID
sendo variável local para parâmetros ...
Espero que isto ajude.
É um parâmetro nomeado.
Em C#, você prefixo o parâmetro com @ (veja aqui).
Considere as seguintes afirmações
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Cada vez que uma instrução é executada, o Oracle verifica ocorrências anteriores da mesma consulta.Se encontrar a mesma consulta, ele fará uso da mesma plano de execução.Caso contrário, é necessário encontrar os vários caminhos de execução, elaborar o plano de execução ideal e executá-lo.
Ao contrário dos humanos, não é inteligente o suficiente para perceber que apenas o id mudou (conforme exemplo acima).Daí ele passa por todas as lutas e executa.
Mas há uma maneira de dizer ao Oracle que é uma declaração semelhante e que pode usar o mesmo plano de execução - VARIÁVEL DE VINCULAÇÃO.Encontre o exemplo abaixo:
declare
v_id number;
v_name varchar2(30);
type c is ref cursor;
c1 c;
begin
for i in 1..100
loop
open c1 for 'select * from T_emp where id = :x' using i;
fetch c1 into v_name;
dbms_output.put_line('name is ' || v_name);
end loop;
END;
Usar variáveis Bind ajuda a melhorar o desempenho dez vezes.PL/SQL usa as variáveis de ligação por conta própria (você não precisa informar isso explicitamente)
Essa também é a sintaxe do parâmetro para uma consulta Delphi