Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 связываемые переменные  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
я так понял их нужно по возможности всегда использовать?если ошибаюсь,то когда?
19 июн 06, 18:16    [2788976]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
и вот вопрос вдогонку:
есть запрос
select * from emp where empno = 123;
и другой запрос:
select * from emp where empno = :empno;

В первом запросе я получаю к примеру сотрудника с номером 123,но ведь можно и вторым запросом.А как я во втором запросе учитываю,что мне нужен сотрудник с номером 123?Надо перед вторым запросом объявить что-то типа:
variable :empno = 123;
?
Спасибо.
19 июн 06, 18:36    [2789071]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
xymbo
и вот вопрос вдогонку:
есть запрос
select * from emp where empno = 123;
и другой запрос:
select * from emp where empno = :empno;

В первом запросе я получаю к примеру сотрудника с номером 123,но ведь можно и вторым запросом.А как я во втором запросе учитываю,что мне нужен сотрудник с номером 123?Надо перед вторым запросом объявить что-то типа:
variable :empno = 123;
?
Спасибо.


Да. Только затем, если понадобится запрос с empno = 456, то при использовании константы это будет воспринято как новый запрос (с новым разбором, построением плана выполнения и т.д), а при использовании переменной - будет использован уже разобранный запрос (экономия времени, однако :) ).
19 июн 06, 18:49    [2789151]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
tru55
Да. Только затем, если понадобится запрос с empno = 456, то при использовании константы это будет воспринято как новый запрос (с новым разбором, построением плана выполнения и т.д), а при использовании переменной - будет использован уже разобранный запрос (экономия времени, однако :) ).


1. "воспринято как новый запрос", это не всегда так. Зависит от настройки Оракл.

2. "экономия времени", тоже не всегда. Нужно учесть время затрачиваемое на выполнение

exec :empno = 123

Запрос простенький, но это каждый раз новый запрос и лишнее обращение к серверу БД.

В сумме может оказаться больше.
19 июн 06, 18:56    [2789191]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18370
tru55
экономия времени, однако :) .

Не только времени.
19 июн 06, 18:58    [2789202]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
andrey_anonymous
tru55
экономия времени, однако :) .

Не только времени.

А иногда не только экономия. :-)..
19 июн 06, 18:59    [2789213]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
Elic
Member

Откуда:
Сообщений: 29990
mcureenab
2. "экономия времени", тоже не всегда. Нужно учесть время затрачиваемое на выполнение
exec :empno = 123
Запрос простенький, но это каждый раз новый запрос и лишнее обращение к серверу БД.
Ну так это "бзик" лишь SQL-Plus-а. Вряд ли речь о нём.
А в "классических" клиентах вовсе не нужно обращаться к серверу, чтобы установить значение bind-переменной.
19 июн 06, 19:55    [2789386]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
Elic
mcureenab
2. "экономия времени", тоже не всегда. Нужно учесть время затрачиваемое на выполнение
exec :empno = 123
Запрос простенький, но это каждый раз новый запрос и лишнее обращение к серверу БД.
Ну так это "бзик" лишь SQL-Plus-а. Вряд ли речь о нём.
А в "классических" клиентах вовсе не нужно обращаться к серверу, чтобы установить значение bind-переменной.


SQL*Plus самый классический клиент из всех "классических" клиентов. :o)))

Видимо под
variable :empno = 123
автор подразумевал
execute :empno = 123
, а это очень смахивает на SQL*Plus. Хотя я не телепат, могу ошибаться.
19 июн 06, 20:19    [2789436]     Ответить | Цитировать Сообщить модератору
 Re: связываемые переменные  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Именно это!:)Спасибо всем за разъяснения!
19 июн 06, 20:23    [2789444]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить