Подтвердить что ты не робот

Что означает знак двоеточия ":" в SQL-запросе?

Что означает : в запросе?

INSERT INTO MyTable (ID) VALUES (:myId)

Как получить требуемое значение?

Изменить: Также, что называется этим значком? Я хотел искать в google, но какое имя для :?

4b9b3361

Ответ 2

Что означает ":" в запросе?

A связать переменную. Переменные Bind позволяют повторно использовать один оператор SQL (независимо от того, используется ли запрос или DML) многократно, что помогает обеспечить безопасность (путем отказа от атак SQL-инъекций) и производительности (путем уменьшения необходимого количества синтаксического анализа).

Как получить требуемое значение?

Прежде чем запрос (или DML) будет выполнен Oracle, ваша программа создаст курсор. Ваша программа выдает SQL-запрос для этого курсора, тогда он должен связывать значения для каждой переменной привязки, на которую ссылается SQL. Как это делается, зависит от языка.

Что называется этим знаком?

Двоеточие.

Ответ 3

Это тег для именованного параметра запроса и не является частью фактического синтаксиса запроса. Тег заменяется некоторым значением, указанным в коде, который делает запрос до его фактического запуска.

Ответ 5

Colon : используется в языке запросов Hibernate Query для обозначения того, что есть параметр.

Итак, что это значит: SQL SYNTAX:

SELECT * FROM EMPLOYEE WHERE EMP_ID = empID

совпадает с HQL SYNTAX:

SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID

empID является локальной переменной для параметров...

Надеюсь, что это поможет.

Ответ 6

Рассмотрим следующие утверждения

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 действительно использует переменные связывания (вам не нужно явно указывать)

Ответ 7

а также синтаксис параметра для запроса Delphi