Re[2]: ��� SUSPEND
Здравствуйте, sasha. Вы писали 7 сентября 2006 г., 16:59:15: Если рассматривать с этой точки зрения, то предлагаю запретить в хранимых процедурах: А зачем тогда было запрещать сортировку по невыбираемым полям в запросах с группировкой? И так бы прокатило... А что, запретили что-ли? Я например в такой сортировке ничего плохого не вижу и иногда пользую. -- С уважением, Владимир mailto:[EMAIL PROTECTED]
Re: Дубликаты при SUSPEND
Андрей Могильный wrote: если б меня distinct устроил, я б и не спрашивал. хранимка будет join'иться с другими таблицами, боюсь там везде дубликаты пойдут, а пихать в каждый запрос с этой хранимкой distinct ой как неохота. А нельзя ли так преобразовать этот граф, чтобы исключить возможность повторного выхода на тот же узел? Например, PATH или left-rigth к веткам-листьям добавить? А то так и зациклиться запросто.
Re: Дубликаты при SUSPEND
Konstantin R. Beliaev [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Андрей Могильный wrote: если б меня distinct устроил, я б и не спрашивал. хранимка будет join'иться с другими таблицами, боюсь там везде дубликаты пойдут, а пихать в каждый запрос с этой хранимкой distinct ой как неохота. А нельзя ли так преобразовать этот граф, чтобы исключить возможность На этот вопрос лучше искать ответ в книге под названием Теория графов P.S. Это не литература о дворянстве :-):-):-):-)
��������� ��� SUSPEND
÷ÓÅÍ ÐÒÉ×ÅÔ! ðÉÛÕ ÓÅÌÅËÔÉ×ÎÕÀ ÒÅËÕÒÓÉ×ÎÕÀ ÈÒÁÎÉÍËÕ ÏÂÈÏÄÁ ÄÅÒÅ×Á (ÄÁÖÅ ÇÒÁÆÁ), ÎÁ ×ÙÈÏÄÅ ÔÁÂÌÉÃÁ Ó ÏÄÎÉÍ ÐÏÌÅÍ - ÎÅËÉÊ ID. ôÁË ×ÏÔ ÐÒÉ ÏÂÈÏÄÅ ×ÏÚÍÏÖÅÎ ×ÙÈÏÄ ÄÕÂÌÉËÁÔÏ×, Ô.Å. ÔÅ ID ÕÖÅ ÐÏÐÁÌÉ × SUSPEND ÒÁÎÅÅ. íÏÖÎÏ ÌÉ ËÁË-ÔÏ ÕÚÎÁÔØ, ÞÔÏ ÕÖÅ ÏÔSUSPENDÉÌÏÓØ? ;) ô.Å. ãÉËÌ begin id:=someid; /*÷ÏÔ ÚÄÅÓØ ÈÏÔÅÌÏÓØ ÂÙ ÐÒÏ×ÅÒÉÔØ, Á ÎÅ ÂÙÌ ÌÉ ÕÖÅ ÜÔÏÔ ID ÒÁÎÅÅ ×ÙÄÁÎ ÎÁÒÕÖÕ ÐÒÉ ÄÒÕÇÉÈ ÒÅËÕÒÓÉ×ÎÙÈ ×ÙÚÏ×ÁÈ ÜÔÏÊ ÖÅ ÈÒÁÎÉÍËÉ*/ suspend; end éÌÉ ËÁË ÜÔÏ ÍÏÖÎÏ ÓÄÅÌÁÔØ? åÓÌÉ × ÌÏÂ, ÄÅÌÁÔØ ÎÅ ÞÅÒÅÚ SUSPEND, Á ÞÅÒÅÚ ÎÅËÕÀ ×ÒÅÍÅÎÎÕÀ ÔÁÂÌÉÃÕ, ÎÅ ÏÞÅÎØ ÈÏÒÏÛÏ, ÂÕÄÅÔ ÐÒÉÔÏÒÍÁÖÉ×ÁÔØ, ÄÁ É ÍÕÓÏÒ ÐÌÏÄÉÔØ, ÈÒÁÎÉÍËÁ ÂÕÄÅÔ ÞÁÓÔÏ ×ÙÚÙ×ÁÔØÓÑ. _ ó Õ×ÁÖÅÎÉÅÍ, áÎÄÒÅÊ íÏÇÉÌØÎÙÊ.
Re: ��������� ��� SUSPEND
Hi Андрей Могильный дубликатов, т.е. те ID уже попали в SUSPEND ранее. Можно ли как-то узнать, что уже отSUSPENDилось? ;) Т.е. Цикл begin id:=someid; /*Вот здесь хотелось бы проверить, а не был ли уже этот ID ранее выдан наружу при других рекурсивных вызовах этой же хранимки*/ suspend; end Или как это можно сделать? Если в лоб, делать не через SUSPEND, а через некую временную таблицу, не очень хорошо, будет притормаживать, да и мусор плодить, хранимка будет часто вызываться. Зачем так сложно тебе не проще будет сделать select distinct id from SP? WBR Evgeny Putilin.
Re: ��������� ��� SUSPEND
select distinct id from SP? ÅÓÌÉ Â ÍÅÎÑ distinct ÕÓÔÒÏÉÌ, Ñ Â É ÎÅ ÓÐÒÁÛÉ×ÁÌ. ÈÒÁÎÉÍËÁ ÂÕÄÅÔ join'ÉÔØÓÑ Ó ÄÒÕÇÉÍÉ ÔÁÂÌÉÃÁÍÉ, ÂÏÀÓØ ÔÁÍ ×ÅÚÄÅ ÄÕÂÌÉËÁÔÙ ÐÏÊÄÕÔ, Á ÐÉÈÁÔØ × ËÁÖÄÙÊ ÚÁÐÒÏÓ Ó ÜÔÏÊ ÈÒÁÎÉÍËÏÊ distinct ÏÊ ËÁË ÎÅÏÈÏÔÁ. _ ó Õ×ÁÖÅÎÉÅÍ, áÎÄÒÅÊ íÏÇÉÌØÎÙÊ.
Re: ��������� ��� SUSPEND
select distinct id from SP? ÅÓÌÉ Â ÍÅÎÑ distinct ÕÓÔÒÏÉÌ, Ñ Â É ÎÅ ÓÐÒÁÛÉ×ÁÌ. ÈÒÁÎÉÍËÁ ÂÕÄÅÔ join'ÉÔØÓÑ Ó ÄÒÕÇÉÍÉ ÔÁÂÌÉÃÁÍÉ, ÂÏÀÓØ ÔÁÍ ×ÅÚÄÅ ÄÕÂÌÉËÁÔÙ ÐÏÊÄÕÔ, Á ÐÉÈÁÔØ × ËÁÖÄÙÊ ÚÁÐÒÏÓ Ó ÜÔÏÊ ÈÒÁÎÉÍËÏÊ distinct ÏÊ ËÁË ÎÅÏÈÏÔÁ. ÎÕ ÔÁË ÓÄÅÌÁÊ ÈÒÁÎÉÍËÕ ËÏÔÏÒÁÑ ÂÕÄÅÔ ÄÅÌÁÔØ óåìåëô äéóôéîëô ÉÚ ÜÔÏ, É ÅÅ É ÄÖÏÊÎØ :)
Re: ��������� ��� SUSPEND
ðÏÎÑÌ! óÐÁÓÉÂÏ, ËÏÌÌÅÇÉ! _ ó Õ×ÁÖÅÎÉÅÍ, áÎÄÒÅÊ íÏÇÉÌØÎÙÊ.
Re: Дубликаты при SUSPEND
Андрей Могильный пишет: select distinct id from SP? если б меня distinct устроил, я б и не спрашивал. Постановка вопроса страдает, вестимо... Тяжело мысли угадывать, когда вы на двух языках сразу думаете (c) Можешь, конечно, обойдись временной таблицей, как и сам говорил. А если не хочется мусора, то можно сделать EXTERNAL TABLE. -- Regards, Ovchinnikov Vasily ova at tkvc ru
Re: Дубликаты при SUSPEND
Андрей Могильный пишет: select distinct id from SP? если б меня distinct устроил, я б и не спрашивал. Постановка вопроса страдает, вестимо... Тяжело мысли угадывать, когда вы на двух языках сразу думаете (c) Можешь, конечно, обойдись временной таблицей, как и сам говорил. А если не хочется мусора, то можно сделать EXTERNAL TABLE. А ещё лучше - с временной таблицей, и без рекурсии.
Re: Дубликаты при SUSPEND
Hello, Андрей Могильный said the following on 29.09.2006 12:57: Пишу селективную рекурсивную хранимку обхода дерева (даже графа), /*Вот здесь хотелось бы проверить, а не был ли уже этот ID ранее выдан наружу при других рекурсивных вызовах этой же хранимки*/ Если fb2 - сделай для этого контекстную переменную в namespace USER_TRANSACTION -- Oleg
Re: Дубликаты при SUSPEND
Hello, Андрей! Андрей Могильный wrote: Пишу селективную рекурсивную хранимку обхода дерева (даже графа), на выходе таблица с одним полем - некий ID. Так вот при обходе возможен выход дубликатов, т.е. те ID уже попали в SUSPEND ранее. Можно ли как-то узнать, что уже отSUSPENDилось? ;) нет. -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
FB. Stored proc suspend
hi all Подскажите плз., обязана ли хранимая процедура возвращать строки в том же порядке, в котором вызывается suspend?
Re: FB. Stored proc suspend
Hello, Rust! RUST wrote: Подскажите плз., обязана ли хранимая процедура возвращать строки в том же порядке, в котором вызывается suspend? может она и не обязана, но по другому не может. -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Про SUSPEND
Hello, sasha said the following on 07.09.2006 16:33: Мы, к примеру, не можем перейти на .NET 2.0 с .NET 1.1 т.к. очень много изменений надо делать и стандартный майкрософтовский конвертер не справляется. А что именно не получилось? Мы все что хотели - сразу перевели на 2.0. -- Oleg
Re: Про SUSPEND
А что именно не получилось? Мы все что хотели - сразу перевели на 2.0. Не помню что, но после конвертации было несколько сотен ошибок, которые править было некогда. Решили пока на 1.1 остаться. Думаю к новому году таки перейдём...
Re: Про SUSPEND
sasha wrote: Да не проблема запретить. Но чем это тебе поможет, если выходные параметры таки нужны? Ну если нужны - это другой вопрос. Я бы вобще запретил вызывать процедуры через EXECUTE PROCEDURE, если в них есть SUSPEND. Но ты ведь сам сказал что лично такими пользуешься. Поэтому я не знаю что сказать. Можно поступить по другому. В компонентах доступа поддеживать запрос типа EXEC SP ... (или, например, ODBC-шный синтаксис вызова SP), который транслируетя в select / execute procedure в зависимости от наличия OUT-параметров и SUSPEND. Думаю, это решит твою проблему. Коваленко Дмитрий.
Re: оПН SUSPEND
Dmitry Yemanov пишет: sasha [EMAIL PROTECTED] wrote: А можно запретить? Мне кажется что такую тонкость как поведение SUSPEND при вызове процедуры с помощью EXECUTE PROCEDURE, помнят очень не многие. Очень многие люди вызывают процедуры с SUSPEND через EXECUTE. Я, например :-) И какой тайный смысл такового действа? :)
Re: ��� SUSPEND
Serge Buzadzhy [EMAIL PROTECTED] wrote: é ËÁËÏÊ ÔÁÊÎÙÊ ÓÍÙÓÌ ÔÁËÏ×ÏÇÏ ÄÅÊÓÔ×Á? :) ÷ ÐÒÏÃÅÄÕÒÅ ÍÎÅ ÎÁÇÌÑÄÎÅÅ ×ÏÚ×ÒÁÝÁÔØ ÏÄÎÏ ÚÎÁÞÅÎÉÅ ÉÍÅÎÎÏ ÞÅÒÅÚ EXECUTE RETURNING. îÏ ÉÎÏÇÄÁ ÜÔÏ ÚÎÁÞÅÎÉÅ ÎÕÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × ÚÁÐÒÏÓÅ, Á ÔÁÍ ÂÅÚ SELECT ÎÉËÕÄÁ. ÷ ÏÓÎÏ×ÎÏÍ ÜÔÏ ÓÌÕÞÁÉ ÜÍÕÌÑÃÉÉ PSQL-ÆÕÎËÃÉÊ ÉÍÅÀÝÅÍÉÓÑ ÓÒÅÄÓÔ×ÁÍÉ. âÌÁÖØ, ËÏÎÅÞÎÏ, ÎÏ ÔÅÍ ÎÅ ÍÅÎÅÅ :-) -- äÍÉÔÒÉÊ åÍÁÎÏ×
Re: оПН SUSPEND
Dmitry Yemanov пишет: Serge Buzadzhy [EMAIL PROTECTED] wrote: И какой тайный смысл такового действа? :) В процедуре мне нагляднее возвращать одно значение именно через EXECUTE RETURNING. Но иногда это значение нужно использовать в запросе, а там без SELECT никуда. В основном это случаи эмуляции PSQL-функций имеющемися средствами. Блажь, конечно, но тем не менее :-) Хозяин-барин конечно. :) Только надо бы где-то БОЛЬШИМИ БУКВАМИ написать, что при вызове через EXECUTE PROCEDURE дело дальше суспенда не пойдет. Sasha в этом вопросе не одинок, мне уже приходилось объяснять своим юзерам этот вопрос. Как по уму... может лучше было бы ввести понятие тип вызова процедуры. 0 - может вызываться и через SELECT и через EXECUTE PROCEDURE 1 - только через SELECT 2 - только через EXECUTE PROCEDURE. Ну и соответственным образом ругаться в случаях 1 и 2 при попытке компиляции или попытке вызвать процедуру неподобающим образом. Это даст то что девелопер уже на создании процедуры будет вынужден обратить внимание на возможно неочевидный для него нюанс с работой суспенда. А лично ты будешь использовать тип 0 и работать по своей блажи в свое удовольствие. :) Удачи
Re: ��� SUSPEND
Ded [EMAIL PROTECTED] wrote: Íó ìîæåò òîëüêî ñîáðàëèñü, ìíå-òî ïîôèã... Ïîøóêàé òóò ïîèñêîì, ÄÅ âåùàë íåäàâíî íà ýòó òåìó. Âåùàë ÿ íà äðóãóþ òåìó. SUSPEND íèêòî íå çàïðåùàë. -- Äìèòðèé Åìàíîâ
Re: Про SUSPEND
Вещал я на другую тему. SUSPEND никто не запрещал. А можно запретить? Мне кажется что такую тонкость как поведение SUSPEND при вызове процедуры с помощью EXECUTE PROCEDURE, помнят очень не многие. Фактически это потенциальная возможность провести ночь наедине с отладчиком.
Re: Про SUSPEND
sasha wrote: Фактически это потенциальная возможность провести ночь наедине с отладчиком. Если рассматривать с этой точки зрения, то предлагаю запретить в хранимых процедурах: 1. Условные операторы - запросто можно накрутить лишнего. 2. Переменные - легко можно забыть инициализировать. 3. Оператор деления - можно поделить на ноль. 4. Всю остальную арифметику - ничто не мешает сложить не с тем, вычесть не то и умножить вообще на хрен знает что. 5. УДФ. Это вообще чорный ящик. 6. Блоки. Если бигины и енды растыкать не в те места, в которые нужно, то такая херня получается... 7. Операторы обработки исключений. Ну совсем не для среднего ума штучка. 8. SQL-запросы. Случается, даже сервак подвешивают. Примерно так. Жить станет лучше, жить станет веселей. -- Regards. Ded.
Re: Про SUSPEND
Если рассматривать с этой точки зрения, то предлагаю запретить в хранимых процедурах: А зачем тогда было запрещать сортировку по невыбираемым полям в запросах с группировкой? И так бы прокатило...
Re: Про SUSPEND
Очень многие люди вызывают процедуры с SUSPEND через EXECUTE. Я, например :-) Процедуры без выходных параметров у тебя с SUSPEND? Я ведь токо про них... Если да, то почему не EXIT ?
Re: Про SUSPEND
sasha wrote: А зачем тогда было запрещать сортировку по невыбираемым полям в запросах с группировкой? И так бы прокатило... Не-а. Вот это-то как раз не прокатило бы в общем случае. -- Regards. Ded.
Re: Про SUSPEND
А зачем тогда было запрещать сортировку по невыбираемым полям в запросах с группировкой? И так бы прокатило... по личной просьбе оптимизатора - его тошнило PS +:) -- Булычев Алексей http://www.stella-npf.ru
Re: Про SUSPEND
Не-а. Вот это-то как раз не прокатило бы в общем случае. Но ведь до 2.0 так было... Вобще сами посудите. Где такое есть чтобы оператор менял своё поведение в зависимости от способа вызова подпрограммы? Я не теоретик в области языков программирования, но чую что так не должно быть...
Re: Про SUSPEND
Oleg LOA wrote: Объясни как неопределённое поведение может менять своё поведение в зависиости от чего-го там? Мона я? Через фазу луны :-D -- Regards. Ded.
Re: Про SUSPEND
Объясни как неопределённое поведение может менять своё поведение в зависиости от чего-го там? Как это неопределённое поведение? Вот выдержка из LAngRef, стр. 169 Select procedure: • Suspends execution of procedure until next FETCH is issued • Returns output values Executable procedure: • Jumps to final END • Not Recommended Определения Select procedure и Executable procedure - это вобще отдельная тема, поскольку Select procedure всегда является Executable procedure: Select procedures that an application can use in place of a table or view in a SELECT statement. A select procedure must be defined to return one or more values, or an error will result. Executable procedures that an application can call directly, with the EXECUTE PROCEDURE statement. An executable procedure need not return values to the calling program. Фактически из этих определений ясно видно что Select procedure - это такая, которую можно вызвать в команде SELECT. Но поскольку её же можно вызвать и в команде EXECUTE PROCEDURE, то программист формально не может определить будет ли выполнен Jumps to final END или не будет. Я предлагаю в случае отсутствия выходных параметров запретить использование SUSPEND, т.к. для этого предназначен EXIT. Вот, к стати, интересная аналогия на C#: void Button1Click(object sender, System.EventArgs e) { SuspendTest(); } public IEnumerable SuspendTest() { MessageBox.Show(Start); for (int i = 0; i 5; i++) yield return i; } При вызове Button1Click код MessageBox.Show(Start); вобще не срабатывает.
Re: Про SUSPEND
Ты мне мозги не парь. Вот твой вопрос: А зачем тогда было запрещать сортировку по невыбираемым полям в запросах с группировкой? И так бы прокатило... Я это спросил не потому что я против того что вы поменяли. Я даже этим не пользовался никогда. Просто знаю о факте что это было поменяно и что люди имели вопросы. Собственно вопрос я задал с намёком на то: почему сортировку запретить можно, а SUSPEND в процедуре без параметров нельзя? Надо выйти из процедуры - пользуй EXIT.
Re: ��� SUSPEND
sasha [EMAIL PROTECTED] wrote: à SUSPEND â ïðîöåäóðå áåç ïàðàìåòðîâ íåëüçÿ? Íàäî âûéòè èç ïðîöåäóðû - ïîëüçóé EXIT. Äà íå ïðîáëåìà çàïðåòèòü. Íî ÷åì ýòî òåáå ïîìîæåò, åñëè âûõîäíûå ïàðàìåòðû òàêè íóæíû? -- Äìèòðèé Åìàíîâ
Re: Про SUSPEND
Да не проблема запретить. Но чем это тебе поможет, если выходные параметры таки нужны? Ну если нужны - это другой вопрос. Я бы вобще запретил вызывать процедуры через EXECUTE PROCEDURE, если в них есть SUSPEND. Но ты ведь сам сказал что лично такими пользуешься. Поэтому я не знаю что сказать. У меня же ситуация была судя по всему следующая. Процедура делает внутри себя кое-каие вычисления и сохраняет их в таблицах. Для отладки мы наделали кучу выходных параметров чтобы посмотреть что она в таблицы пишет, а когда отладили, то выходные параметры превратили во внутренние переменные. Про то что надо удалить SUSPEND-ы никто не сообразил. В результате мы поимели баг, который вылавливали больше двух часов. Если бы SUSPEND был запрещён, то конкретно этот баг было бы сделать невозможно.
Re: ��� SUSPEND
sasha [EMAIL PROTECTED] wrote: ß áû âîáùå çàïðåòèë âûçûâàòü ïðîöåäóðû ÷åðåç EXECUTE PROCEDURE, åñëè â íèõ åñòü SUSPEND. Íî òû âåäü ñàì ñêàçàë ÷òî ëè÷íî òàêèìè ïîëüçóåøüñÿ. Ïîýòîìó ÿ íå çíàþ ÷òî ñêàçàòü. Äåëî íå ñòîëüêî âî ìíå, ñêîëüêî â êó÷å ïðîöåäóð, ñãåíåðåííûõ IBExpert-îì (è èæå ñ íèì) è ñîäåðæàùèõ SUSPEND èñêëþ÷èòåëüíî øîá áóëî. Ïîìíþ âðåìåíà, êîãäà íà ôîðóìàõ ðåêîìåíäîâàëè â executable-ïðîöåäóðàõ âñåãäà ïèñàòü SUSPEND (íà âñÿêèé ïîæàðíûé ñëó÷àé). Òàê ÷òî íàñëåäèå îé êàê âåëèêî. -- Äìèòðèé Åìàíîâ
Re: оПН SUSPEND
Hello, Dmitry! Dmitry Yemanov wrote: иже с ним) и содержащих SUSPEND исключительно шоб було. Помню времена, когда на форумах рекомендовали в executable-процедурах всегда писать SUSPEND (на всякий пожарный случай). Так что наследие ой как велико. я рекомендовал. Но - при наличии выходных параметров. Другое дело, что как ни пиши, все равно найдется тот, кто неправильно поймет. Что мы наблюдаем сплошь и рядом. -- Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34
Re: Про SUSPEND
Дело не столько во мне, сколько в куче процедур, сгенеренных IBExpert-ом (и иже с ним) и содержащих SUSPEND исключительно шоб було. Помню времена, когда на форумах рекомендовали в executable-процедурах всегда писать SUSPEND (на всякий пожарный случай). Так что наследие ой как велико. Так а зачем версию сервера менять если наследование есть? Хочешь новую версию сервера - переделывай. Не хочешь переделывать - сиди на старой версии... Мы, к примеру, не можем перейти на .NET 2.0 с .NET 1.1 т.к. очень много изменений надо делать и стандартный майкрософтовский конвертер не справляется. Ну и что здесь такого страшного? По-моему вполне нормальная ситуация, когда производитель исправил свои ошибки и выпустил несовместимую со старыми ошибками версию.
Re: оПН SUSPEND
Dmitri Kuzmenko wrote: Dmitry Yemanov wrote: иже с ним) и содержащих SUSPEND исключительно шоб було. Помню времена, когда на форумах рекомендовали в executable-процедурах всегда писать SUSPEND (на всякий пожарный случай). Так что наследие ой как велико. я рекомендовал. Но - при наличии выходных параметров. Другое дело, что как ни пиши, все равно найдется тот, кто неправильно поймет. И вструмячит по умолчанию прямо в оглуплятор популярного в народе инструмента: create procedure New_Procedure () returns () as begin /* Procedure Text */ suspend; end :-D -- Regards. Ded.
Re: ��� SUSPEND
sasha [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Ìû, ê ïðèìåðó, íå ìîæåì ïåðåéòè íà .NET 2.0 ñ .NET 1.1 ò.ê. î÷åíü ìíîãî èçìåíåíèé íàäî äåëàòü è ñòàíäàðòíûé ìàéêðîñîôòîâñêèé êîíâåðòåð íå ñïðàâëÿåòñÿ. Íó è ÷òî çäåñü òàêîãî ñòðàøíîãî? ×òî âìåñòî ïîëåçíîé ðàáîòû ïðèõîäèòñÿ çàíèìàòñÿ ïåðåäåëêàìè òîëüêî èç-çà òîãî, ÷òî ïðîèçâîäèòåëü ÷òî-òî ïîìåíÿë. Ïîëüçà îò çàïðåùåíèÿ suspend âåñüìà ñîìíèòåëüíà, à ðàáîòû ïðèáàâèò ìíîãî, ñîâåðøåííî íåíóæíîé. P. S. Äåäó ïåðñîíàëüíûé ïðèâåò!
Про SUSPEND
Привет. Не помню подымался ли вопрос, поэтому спрошу. Можно ли запретить SUSPEND в процедурах, которые не имеют выходных параметров? Сегодня пару часов мучались из-за того что в такой процедуре каким-то образом очутился этот SUSPEND и процедура не выполнялась до конца. По идее использование SUSPEND в таких процедурах - это бред.
Re: Про SUSPEND
sasha wrote: Сегодня пару часов мучались из-за того что в такой процедуре каким-то образом очутился этот SUSPEND и процедура не выполнялась до конца. А прикинь что будет если туда вдруг затесается EXIT или в структуре IF-ов кто-то облажается... Расслабься, в двойке уже запретили. -- Regards. Ded.
Re: Про SUSPEND
Расслабься, в двойке уже запретили. В какой это? Я только двойками и пользуюсь и оно работает.
Определение наличия SUSPEND по BLR
Привет всем. Проблему я описал в сообщении вызов селективных процедур ..., но, как обычно, народ понесло как коней из горящей конюшни. Прошу - в эту ветку писать только по существу. А именно по теме топика! Скачал исходники OdbcJdbc, чтобы посмотреть на порекомендованный способ определения SUSPEND по BLR. --- Способ тривиален - ищется blr_send. см Файл IscProceduresResultSet.cpp / IscProceduresResultSet::canSelectFromProcedure --- Правда реализация весьма странная - сначала формируется текстовое представление BLR-кода, потом ищется строка blr_send. Непонятно - почему бы просто не найти код blr_send=14 ??? Я, через IBExpert, посмотрел содержимое двух SP (с SUSPEND и без) в обоих есть blr_send. Та, которая с SUSPEND, отличается так: blr_begin, blr_send, 1, blr_begin, тут идут некий assign-инструкции blr_end, blr_stall, blr_end Вот теперь я и мыслю - это нужно нечто подобное искать в BLR-е ??? А еще я буду премного благодарен кодоведам сервера, если они скажут в каких файлах исходника сервера находится генерация BLR-а для SUSPEND Коваленко Дмитрий. www.ibprovider.com --~--~-~--~~~---~--~~ -~--~~~~--~~--~--~---