-
Пишу процедуру на FireBird SQL, мне необходимо обработать только 1ую запись, которая удовлетворяет моему условию, но в ответ FireBird выдаёт ошибку mutiple rows in singleton select Вот кусок моего SQL :
select time_,summ_ from casebase where cardno_ = :login and
prim_ = 'Login activated' and time_ < :vremya order by time_ desc
into :NACHALO,:activated_summa;
result_nachalo = nachalo;
...
Как выбрать только первую запись, которая удовлетворяет условию или обработать только 1ую?
-
курсор и брейк
-
или как там по ихнему курсоры зовутся
-
> Reindeer Moss Eater © (26.03.08 11:13) [1]
Спасибо!!!
-
for select
-
В полуторке нет курсоров. select first 1 и далее по тексту запроса..
-
> jack128_ (26.03.08 23:22) [5]
Хм. Запомню. Может пригодится. Были идеи у заказчика.
-
да ладно нету. по крайней мере неявные есть, просто их там не называют курсорами.
-
Top 1 ?
-
>Reindeer Moss Eater © (27.03.08 08:02) [7] >да ладно нету. по крайней мере неявные есть, просто их там не называют курсорами.
В ИБ нет курсоров. Как бы их не называли
-
> MsGuns © (27.03.08 21:16) [9] > > В ИБ нет курсоров. Как бы их не называлиВо-первых, речь идет не об Interbase, а о Firebird, что таки есть две большие разницы. Во-вторых, курсоры таки есть :) Глянь в сырцы. А в "двойке" даже задаются явно в PL\SQL DECALRE CURSOR <CURSOR_NAME> AS [SELECT ...];
-
Вот фрагмент процедуры из C:\Program Files\Common Files\Borland Shared\Data\employee.gdb
FOR SELECT h.department, d.department, d.mngr_no, d.dept_no FROM department d LEFT OUTER JOIN department h ON d.head_dept = h.dept_no ORDER BY d.dept_no INTO :head_dept, :department, :mngr_no, :dno DO BEGIN IF (:mngr_no IS NULL) THEN BEGIN mngr_name = "--TBH--"; title = ""; END .....
если это не неявный курсор (как бы он по другому ни обзывался в interbase'е ), то я тогда испанский летчик.
-
select FIRST 1 time_,summ_ from casebase where cardno_ = :login and prim_ = 'Login activated' and time_ < :vremya order by time_ desc into :NACHALO,:activated_summa; result_nachalo = nachalo;
как уже раньше сказали в [5], и нечего людям мозги парить.
-
Во-вторых, курсоры таки есть :) Глянь в сырцы. А в "двойке" даже задаются явно в PL\SQL DECALRE CURSOR <CURSOR_NAME> AS [SELECT ...];
Это явные. А неявные еще в четверке IB были и есть.
-
> если это не неявный курсор (как бы он по другому ни обзывался > в interbase'е ), то я тогда испанский летчик.
представь себе некий диалект паскаля, в котором бы не было циклов while и repeat, а был бы только for. Я конечно понимаю, что можно было бы говорить, что мол в таком языке есть циклы. Но это демагогия.
-
демагогией здесь занимаются те, кто упорствует насчет отсутсвия неявных курсоров в ib.
-
Нет курсоров - нет возможности "построчной" обработки данных выборки. Есть возможность - есть и курсоры.
И нефик, как говорилось выше "парить людям мозг".
-
DECALRE CURSOR было с незапамятных времен...
-
> DECALRE CURSOR было с незапамятных времен...
Embedded SQL для gpre ни с чем не путаем ?
-
> PEAKTOP © (27.03.08 23:27) [18] > Embedded SQL для gpre ни с чем не путаем ?
Откуда ж я знаю, путаешь ты, или нет?
|