Che cosa significa il segno due punti “:” fare in una query SQL?
-
24-09-2019 - |
Domanda
Che cosa fa il basamento :
per in una query?
INSERT INTO MyTable (ID) VALUES (:myId)
Come recuperare il valore desiderato?
Modifica Anche ciò che si chiama quel segno? Volevo cercare su google, ma qual è il nome per :
?
Soluzione
Altri suggerimenti
Che cosa significa ":" stare in piedi per in una query
Un legano variabile. Bind variabili permettono una singola istruzione SQL (se una query o DML) per essere riutilizzati più volte, che aiuta la sicurezza (vietando gli attacchi SQL injection) e le prestazioni (riducendo la quantità di analizzare richiesto).
Come recuperare il valore desiderato?
Prima di una query (o DML) viene eseguito da Oracle, il programma creerà un cursore. I vostri problemi del programma SQL per essere analizzati per quella del cursore, allora deve associare i valori per ogni variabile si legano a cui si riferisce l'SQL. Come questo viene fatto dipende dalla lingua.
Che cosa è quel segno chiama?
Un colon.
Questo è un tag per un parametro di query di nome, e non fa parte della sintassi effettiva della query. Il tag viene sostituito con un certo valore specificato nel codice che rende la query prima che venga effettivamente eseguito.
Colon :
viene utilizzato in HQL Hibernate Query Language per indicare che c'è un parametro in questione.
Quindi, ciò significa: SQL sintassi:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
è lo stesso come HQL sintassi:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
empID
essendo variabile locale per i parametri ...
Spero che questo aiuti.
Si tratta di una chiamato parametro .
In C #, è prefisso il parametro con @ (vedi qui ).
Si considerino le seguenti dichiarazioni
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Ogni volta che viene eseguita una dichiarazione, controlli Oracle per precedenti occorrenze della stessa query. Se trova la stessa query, si avvale dello stesso piano esecuzione . In caso contrario, si deve trovare i vari percorsi di esecuzione, elaborare il piano di esecuzione ottimale ed eseguirlo.
A differenza umana è abbastanza intelligente non rendersi conto che solo l'ID è cambiato (come da esempio sopra). Quindi passare attraverso tutte le lotte e l'esegue.
Ma c'è un modo per dire che il suo Oracle una dichiarazione simile e che si può utilizzare lo stesso piano di esecuzione - BIND VARIABILE . Si prega di trovare il seguente esempio:
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;
Utilizzando variabili bind aiuta a migliorare il dieci volte le prestazioni. PL / SQL non utilizzare le variabili di bind da solo (non è necessario in modo esplicito gli dite)
che è anche la sintassi parametro per un Delphi interrogazione