Что означает :
в запросе?
INSERT INTO MyTable (ID) VALUES (:myId)
Как получить требуемое значение?
Изменить: Также, что называется этим значком? Я хотел искать в google, но какое имя для :
?
Что означает :
в запросе?
INSERT INTO MyTable (ID) VALUES (:myId)
Как получить требуемое значение?
Изменить: Также, что называется этим значком? Я хотел искать в google, но какое имя для :
?
Это называется связывать переменную в Oracle.
какое имя для ":"?
Colon.
Что означает ":" в запросе?
A связать переменную. Переменные Bind позволяют повторно использовать один оператор SQL (независимо от того, используется ли запрос или DML) многократно, что помогает обеспечить безопасность (путем отказа от атак SQL-инъекций) и производительности (путем уменьшения необходимого количества синтаксического анализа).
Как получить требуемое значение?
Прежде чем запрос (или DML) будет выполнен Oracle, ваша программа создаст курсор. Ваша программа выдает SQL-запрос для этого курсора, тогда он должен связывать значения для каждой переменной привязки, на которую ссылается SQL. Как это делается, зависит от языка.
Что называется этим знаком?
Двоеточие.
Это тег для именованного параметра запроса и не является частью фактического синтаксиса запроса. Тег заменяется некоторым значением, указанным в коде, который делает запрос до его фактического запуска.
Это именованный параметр.
В С# вы добавляете параметр к @(см. Здесь).
Colon :
используется в языке запросов Hibernate Query для обозначения того, что есть параметр.
Итак, что это значит: SQL SYNTAX:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
совпадает с HQL SYNTAX:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
empID
является локальной переменной для параметров...
Надеюсь, что это поможет.
Рассмотрим следующие утверждения
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Каждый раз, когда выполняется оператор, Oracle проверяет предыдущие вхождения одного и того же запроса. Если он находит тот же запрос, он использует тот же план выполнения. Если нет, он должен найти различные пути выполнения, составить оптимальный план выполнения и выполнить его.
В отличие от человека, он недостаточно интеллектуальный, чтобы понять, что только идентификатор изменился (как указано выше). Следовательно, он проходит через все схватки и выполняет его.
Но есть способ сказать Oracle, что его аналогичный оператор и что он может использовать один и тот же план выполнения - BIND VARIABLE. Ниже приведен пример:
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;
Использование переменных Bind помогает повысить производительность в десять раз. PL/SQL действительно использует переменные связывания (вам не нужно явно указывать)
а также синтаксис параметра для запроса Delphi
проверьте эту ссылку, которая очень полезна, если вы ищете свои вопросы о Delphi http://docwiki.embarcadero.com/RADStudio/Rio/en/Using_Parameters_in_Queries