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

Откуда:
Сообщений: 5
Помогите переписать запрос используя связанные переменные

select Batch_Id, Section, CoAcc, Treat,
SUM (round(Cost * Numb_Or_Time,2)) Sum_Fact,
SUM (Time_Rate_W*Numb_Or_Time) HoursRate
from A01i_9M
where Ent_Id = bk.Ent_Id
and Dept_Id = bk.Dept_Id
and Brigade = bk.Brigade
and Pay_Id = bk.Pay_Id
and Tab_Num is NULL
group by Batch_Id, Section, CoAcc, Treat
23 июл 07, 13:50    [4423615]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116101
Zindzay
Помогите переписать запрос используя связанные переменные

select Batch_Id, Section, CoAcc, Treat,
SUM (round(Cost * Numb_Or_Time,2)) Sum_Fact,
SUM (Time_Rate_W*Numb_Or_Time) HoursRate
from A01i_9M
where Ent_Id = bk.Ent_Id
and Dept_Id = bk.Dept_Id
and Brigade = bk.Brigade
and Pay_Id = bk.Pay_Id
and Tab_Num is NULL
group by Batch_Id, Section, CoAcc, Treat


Поясните. А какие Вы здесь считаете "развязанными" ? :-)
23 июл 07, 13:51    [4423622]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Хрюхрюшкин.
Member [заблокирован]

Откуда: зовите меня Р. Бендер Младшенький
Сообщений: 3970
Я так вообще ничего не понял. Особенно что такое bk.*
23 июл 07, 13:52    [4423626]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63939
Блог
Хм. А не пробовали ли Вы сначала переписать его так, чтобы он работал? ;-) Я не имею в виду работу внутри ХП c загадочным именем "bk".
23 июл 07, 13:52    [4423627]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Zindzay
Member

Откуда:
Сообщений: 5
в таком виде подойдет?
select x1, x2, SUM(x6)
from table
where x3 = a,
and x4 = b
and x5 is NULL
group by x1, x2
23 июл 07, 14:04    [4423726]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Zindzay
в таком виде подойдет?
Вопрос-то в чем?
23 июл 07, 14:07    [4423746]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116101
Zindzay
в таком виде подойдет?
select x1, x2, SUM(x6)
from table
where x3 = a,
and x4 = b
and x5 is NULL
group by x1, x2


Если a и b - это Ваши переменные, то они уже связанные...
23 июл 07, 14:09    [4423762]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Zindzay
Member

Откуда:
Сообщений: 5
Например два блока:
1. Связанные переменные не используются:
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for i in 1..1000
loop
open l_rc for
'select object_name from all_objects where object_id =' || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
(round((dbms_utility.get_time-l_start)/100, 2) ||
' seconds...');
end;

2.
Связанные переменные используются:
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for i in 1..1000
loop
open l_rc for
'select object_name from all_objects where object_id = :x'
using i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
(round((dbms_utility.get_time-l_start)/100, 2) ||
' seconds...');
end;

Я прошу вас пояснить мне, как использовать связанные переменные не в простых запросах
типа:
'select object_name from all_objects where object_id = :x'
using i;
а в более сложных где в условие where используется не одно поле, а несколько, например
where x3 = a,
and x4 = b
and x5 is NULL
group by x1, x2

заранее спосибо за помощь
23 июл 07, 14:17    [4423826]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116101
У Вас распространенная ошибка.
В приведенных Вами примерах суть именно в динамическом SQL, в который подставляются
литералы конкатенацией.

В Вашем же примере нет динамического SQL и переменные - это обычные
переменные PL/SQL, которые автоматически являются связанными переменными.
23 июл 07, 14:19    [4423841]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
alecsey
Member

Откуда: Москва
Сообщений: 830
ппц...

для начала лучше сделай так
open l_rc for
select object_name from all_objects where object_id = x

...куда катится мир
23 июл 07, 14:19    [4423842]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Хрюхрюшкин.
Member [заблокирован]

Откуда: зовите меня Р. Бендер Младшенький
Сообщений: 3970
Zindzay

Читайте Кайта. Там всё разжевано насчет связываемых переменных так что дальше просто некуда.
23 июл 07, 14:20    [4423851]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Zindzay
Member

Откуда:
Сообщений: 5
Спасибо за то, что указали мне на мою ошибку.
Не могли бы вы дать ссылку на литературу по использованию динамического SQL.
23 июл 07, 14:23    [4423872]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
nikopol
Member

Откуда:
Сообщений: 335
Zindzay
Спасибо за то, что указали мне на мою ошибку.
Не могли бы вы дать ссылку на литературу по использованию динамического SQL.

Dynamic SQL
23 июл 07, 14:30    [4423933]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116101
Документация заполнена соответствующей информацией.

Посмотрите вот здесь

Coding Dynamic SQL

Посмотрите особенно внимательно подглавку "Why Use Dynamic SQL"
23 июл 07, 14:30    [4423934]     Ответить | Цитировать Сообщить модератору
 Re: Помогите переписать запрос используя связанные переменные  [new]
Zindzay
Member

Откуда:
Сообщений: 5
Спасибо за ссылки.
23 июл 07, 14:35    [4423972]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить