Was bedeutet das Doppelpunkt-Zeichen „:“ in einer SQL-Abfrage tun?
-
24-09-2019 - |
Frage
Was bedeutet :
steht in einer Abfrage?
INSERT INTO MyTable (ID) VALUES (:myId)
Wie holen sie den gewünschten Wert?
Edit: Auch was ist das Zeichen genannt? Ich wollte auf Google suchen, aber was ist der Name für :
?
Lösung
Andere Tipps
Was bedeutet ":" steht für in einer Abfrage
Bind-Variable . Bind Variablen ermöglichen eine einzelne SQL-Anweisung (ob eine Abfrage oder DML) wiederverwendet werden viele Male sein, die Sicherheit hilft (durch SQL-Injection-Angriffe disallowing) und Leistung (durch Verringerung der Menge an Parsen erforderlich).
Wie funktioniert es den gewünschten Wert holen?
Vor einer Abfrage (oder DML) von Oracle ausgeführt wird, wird das Programm einen Cursor erstellen. Ihr Programm gibt den SQL-Code für diesen Cursor analysiert werden, dann muss es Werte binden für jede Bindevariable bezeichnet durch die SQL. Wie dies geschieht, hängt von der Sprache.
Was ist das Zeichen genannt?
Ein Doppelpunkt.
Dies ist ein Tag für einen benannte Abfrage-Parameter und ist nicht Teil der eigentlichen Syntax der Abfrage. Der Tag wird mit einem Wert ersetzt in dem Code angegeben, der die Abfrage macht, bevor es tatsächlich ausgeführt wird.
Colon :
wird in HQL Hibernate Query Language verwendet, um anzuzeigen, dass es ein beteiligten Parameter.
Also, was das bedeutet ist: SQL-Syntax:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
ist gleich wie HQL SYNTAX:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
empID
wobei lokale Variable für Parameter ...
Hope, das hilft.
Es ist ein benannten Parameter .
In C # Präfix Sie den Parameter mit @ (siehe hier ).
Beachten Sie die folgenden Aussagen
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Jedes Mal, wenn eine Anweisung ausgeführt wird, Oracle prüft vorherige Vorkommen derselben Abfrage. Wenn es die gleiche Abfrage findet, macht es die Verwendung des gleichen Ausführungsplan . Wenn nicht, hat es die verschiedenen Ausführungspfade zu finden, kommt mit dem optimalen Ausführungsplan und ausführen.
Im Gegensatz zu menschlichen ist es nicht intelligent genug, um zu erkennen, dass nur die ID (gemäß obigem Beispiel) geändert hat. Daher gehen sie durch alle Kämpfe und führt sie aus.
Aber es gibt eine Möglichkeit, Oracle zu sagen, dass es eine ähnliche Aussage und dass es den gleichen Ausführungsplan verwenden kann - BIND VARIABLE . Hier finden Sie das folgende Beispiel:
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;
Variablen Bind Verwendung hilft, die Leistung verzehnfachen zu verbessern. PL / SQL hat die Bind-Variablen auf eigene verwenden (nicht explizit muss es sagen)
Das ist auch der Parameter Syntax für eine Delphi-Abfrage