|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Delphi XE3, FIBPlus 7.6, Firebird 3.0 Подскажите, пожалуйста, технику работу с компонентом TpFIBStoredProc. Требуется выполнить хранимую процедуру и получить возвращаемое ею значение. Делаю следующее: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
После исполнения процедуры запись существует и содержит корректное значение, и мы "стоим" на этой записи, что подтверждается корректным обращением к полю в отладчике. Однако свойство EOF почему-то установлено в TRUE, а RecordCount = 0. Во-первых, это странно, во-вторых, нужен способ проверить, не пуст ли выходной набор, и можно ли запрашивать значение поля. Нарываться на исключение очень не хочется. Или, возможно, существует другой способ получить возвращаемое значение(я) процедуры. Или подскажите, где посмотреть примеры и документацию по FIBPlus. Сайт devrace.com мертвый. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 21:33 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Процедура селективная? > Подскажите, пожалуйста, технику работу с компонентом TpFIBStoredProc. ИМХО, лучшая техника работы с компонентом T***StoredProc - использовать вместо него компонент T***Query. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 21:39 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамлучшая техника работы с компонентом T***StoredProc - использовать вместо него компонент T***Query. TpFIBStoredProc - прямой наследник TpFIBQuery, добавляет к нему лишь пару невиртуальных методов, не имеющих отношения к рассматриваемой функциональности, так что в данном случае замена шила на мыло не поможет. Не вполне понимаю, что такое селективная процедура. Вызванная через SELECT? Основанная на одном SELECT? Нет, процедура неселективная. Процедура проверяет некие условия, делает INSERT или UPDATE и возвращает идентификатор вставленной (обновленной) записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 21:52 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyanskyTpFIBStoredProc - прямой наследник TpFIBQuery Уверен?.. Точно не путаешь её с TIBStoredProc и TIBQuery? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:11 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky> Не вполне понимаю, что такое селективная процедура. Которая саспендит много строк. > Процедура проверяет некие условия, делает INSERT или UPDATE > и возвращает идентификатор вставленной (обновленной) записи. Так может тогда правильнее не Fields дергать, а Params ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:16 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovУверен? Глазам своим верю. Тут есть, однако, особенность: TpFIBStoredProc и TpFIBQuery - вовсе не наследники TpFIBDataSet, как можно было бы ожидать. Из методов навигации у них есть только Next, что тоже неожиданно. И непонятное поведение EOF связано, скорее всего, именно с этим. Гаджимурадов РустамТак может тогда правильнее не Fields дергать, а Params ? Для получения результата?! Хм, попробую, но что-то мне удивителен этот путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:28 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Попробовал. Нет, число параметров осталось ровно тем же, только входные. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:33 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:48 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 22:49 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Я понял, что делать. Можно проверять StoredProc.BOF или StoredProc.Current.Count. Но можно и не проверять вовсе, потому что процедура ВСЕГДА возвращает значение, хоть какое-нибудь. Как и делают в статье, любезно указанной kdv. Моя привычка все проверять в данном случае оказалась не к месту. Однако это все же не объясняет непонятное поведение EOF и RecordCount. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 23:18 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyanskyОднако это все же не объясняет непонятное поведение EOF и RecordCount. потому что StoredProc это не датасет, а execute procedure - не рекордсет. После выполнения оно сразу считывает результат, в итоге EOF становится true. с RecordCount примерно та же фигня - он увеличивается только при проходе по записям. А раз записей нет, EOF, значит Next не работает, ну и recordcount не инкрементируется. См. FIBQuery.pas. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2018, 23:57 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky, Гаджимурадов Рустам... ИМХО, лучшая техника работы с компонентом T***StoredProc - использовать вместо него компонент T***Query. +1 Пример использования: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
=> Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 00:47 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky...потому что процедура ВСЕГДА возвращает значение, хоть какое-нибудь... Да хрен там. shalamyansky... Однако это все же не объясняет непонятное поведение EOF и RecordCount. Ты не показал саму свою процедуру и способ обращения к ней. Добавь в процедуру suspend - вот у тебя и EOF и RecodCount появятся. И результатов процедура сможет вернуть больше одного: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 01:03 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччДТы не показал саму свою процедуру и способ обращения к ней. Добавь в процедуру suspend - вот у тебя и EOF и RecodCount появятся. При execute procedure - не появятся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 01:27 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovчччДТы не показал саму свою процедуру и способ обращения к ней. Добавь в процедуру suspend - вот у тебя и EOF и RecodCount появятся. При execute procedure - не появятся. Ну я там ниже другой код привел, не EP... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 01:30 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyanskyТут есть, однако, особенность: TpFIBStoredProc и TpFIBQuery - вовсе не наследники TpFIBDataSet, как можно было бы ожидать. Из методов навигации у них есть только Next, что тоже неожиданно. И непонятное поведение EOF связано, скорее всего, именно с этим. Вот как раз логично было бы ожидать что TpFIBDataSet является наследником, или использует у себя TpFIBQuery а никак не наоборот. Вообще, обычно сервер выдает не какой-то там мифический датасет, а тупо массив записей. TpFIBQuery а так же TIBSQL имеют буфер только на одну запись. Выполняется запрос и читается 1 запись. По Next читается следующая запись. И так до конца. Конец определяется по EOF = True. Возврат обратно невозможен поскольку некуда возвращаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 04:21 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Всем спасибо! В тему вошел, как действовать, понял. Но тем не менее хочу высказать критические соображения. Вы в этой среде давно, вам многие вещи кажутся очевидными, мне же на свежий (или, напротив, старомодный) взгляд видится иначе. 1. Хранимые процедуры самим своим синтаксисом и механизмом возврата значений задуманы как аналогия DataSet. Когда мы их вызываем через SELECT ли, через EXECUTE ли, получаем набор записей, одну, несколько, или ни одной, точно так же, как при работе с "обычным" DataSet и техника работы с ними интуитивно ожидается такой же. А она другая. Это неудобно. Возможно, мне для вызова процедуры стоило использовать TpFIBDataSet. 2. Вызывая процедуру на клиенте (да и на сервере тоже), мы не можем быть абсолютно уверены, что она вернет не пустой набор. Поэтому код, прежде чем забрать результат из буфера, должен удостовериться, что буфер не пуст. На мой взгляд, код Код: pascal 1. 2.
небезопасен, а должен выглядеть, как Код: pascal 1. 2. 3. 4. 5. 6.
Спасает свойство Current.Count. В "традиционной" технике для проверки использовалось свойство EOF. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 15:56 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky1. Хранимые процедуры самим своим синтаксисом и механизмом возврата значений задуманы как аналогия DataSet. Когда мы их вызываем через SELECT ли, через EXECUTE ли, получаем набор записей, одну нэт. Хранимые процедуры не имеют ничего общего с датасетом. В InterBase и Firebird хранимые процедуры МОГУТ быть селективными, при использовании слова SUSPEND, и ни в каком другом случае датасетами они не являются, как и операторы INSERT, UPDATE, DELETE. shalamyanskyтехника работы с ними интуитивно ожидается такой же. впервые универсальный датасет и универсальный TStoredProc появились в универсальном же BDE. Для массы серверов процедуры не предполагают никакого возврата "наборов записей", поэтому TStoredProc и не являлся исходно датасетом. Соответственно, "интуитивно" никто от StoredProc "датасетности" и не ожидал. shalamyansky Вызывая процедуру на клиенте (да и на сервере тоже), мы не можем быть абсолютно уверены, что она вернет не пустой набор это тоже ересь. Потому что селективная процедура при вызове через select ведет себя абсолютно как и любой другой select. А при вызове через execute procedure - НЕ как рекордсет. В общем, оба ваши домысла основаны на неверных исходных предпосылках. Я замечу, что абсолютно такая же "интуиция" у людей, которые, например, запросу INSERT делают DataSet.Open. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:31 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyanskyХранимые процедуры самим своим синтаксисом и механизмом возврата значений задуманы как аналогия DataSet Это не так. Процедура - изначально только для того нужна, чтобы что-то сделать на сервере и вернуть результат (в OUT-параметре). Просто для удобства добавили возможность работы с ней как с DataSet. shalamyanskyКогда мы их вызываем через SELECT ли, через EXECUTE ли, получаем набор записей Это не так. Через EXECUTE ты не получишь набор записей, даже если процедура и могла бы их вернуть, вызови ты её через SELECT. Ты получишь только результаты в OUT-параметрах (соответствующие значениям полей в 1-й записи или их DEFAULT-значения, если записей нет, или исключение, если OUT-параметр объявлен как NOT NULL и он не был инициализирован). А НЕселективную (в теле которой нет SUSPEND) процедуру так и вообще нельзя вызвать через SELECT, и это правильно. Лучше б и селективные запретили вызывать через EXECUTE, как по мне. shalamyanskyнебезопасен, а должен выглядеть, как Код: pascal 1. 2. 3. 4. 5. 6.
Не знаю, как в FIBPlus, в IBX я пишу так и всё работает всегда: Код: pascal 1. 2.
И "что-то не так" пойти не может, либо будет исключение. Это для НЕселективных процедур. А для селективных - понятное дело, есть First,Eof,Next. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:44 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
YuRockА НЕселективную (в теле которой нет SUSPEND) процедуру так и вообще нельзя вызвать через SELECT Можно. Только она вернёт пустой result set, поскольку технически отсутствующий suspend ничем не отличается от наличествующего, который ни разу не был вызван. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:49 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovYuRockА НЕселективную (в теле которой нет SUSPEND) процедуру так и вообще нельзя вызвать через SELECT Можно. Только она вернёт пустой result set, поскольку технически отсутствующий suspend ничем не отличается от наличествующего, который ни разу не был вызван. У меня всегда такое она возвращает: non-SQL security class defined. Dynamic SQL Error. SQL error code = -84. procedure PROCEDURENAME does not return any values. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:53 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky> Всем спасибо! В тему вошел, как действовать, понял. Низачот. Ибо дальше ты генерируешь несоответствующие реальности представления, рассуждения и выводы. ~~~~~~~~~~~~~~~~~~~~~~~~ Процедуры бывают разных типов. 1. Исходя из задачи, создаешь процедуру нужного тебе типа. 2. Обращаешься к процедуре так, того требует задача. 0. Ты не рассказал о своей задаче, не показал процедуры, но мучаешь абстрактную сову реальным глобусом. -1. Смысла фантазировать нет, когда доступна документация (на русском языке). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:54 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Ой, не такую. Такую: Invalid token. invalid request BLR at offset 23. Procedure PROCEDURENAME is not selectable (it does not contain a SUSPEND statement). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:55 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
YuRock...Не знаю, как в FIBPlus, в IBX я пишу так и всё работает всегда:... Теперь скажи - нах.. это тайное знание автору вопроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 16:56 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
12.01.2018 16:55, YuRock пишет: > Procedure PROCEDURENAME is not selectable (it does not contain a SUSPEND statement). это не так давно ввели - селективные/неселективные. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:08 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky, в аттаче - икземплы из FIBPlus. С небольшим описанием (см. файл FIBPlus Examples_rus.doc). Там есть и работа с процедурами (см. подкаталог StoredProcedure). Работа и с использованием TpFIBStoredProc, и с использованием TpFIBDataSet. ~~~~~~~ Насчет TpFIBDataSet - вопрос отдельный. А вот вместо TpFIBStoredProc лично я обычно использую TpFIBQuery (см. примеры выше). Часть 1: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:09 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
shalamyansky, Часть 2: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:10 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Мимопроходящийэто не так давно ввели - селективные/неселективные. Причём лично я так и не понял назачем это сделали. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:15 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
12.01.2018 17:15, Dimitry Sibiryakov пишет: > Причём лично я так и не понял назачем это сделали. чтоб выдавать вот то самое сообщение. и backward compatibility потыкать палочкой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:23 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччYuRock...Не знаю, как в FIBPlus, в IBX я пишу так и всё работает всегда:... Теперь скажи - нах.. это тайное знание автору вопроса? Возможно в фибах тоже так можно. Проверить не могу. Это было бы логично - узнавать значения параметры из Parameters, а не из Fields. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:28 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Мимопроходящий12.01.2018 16:55, YuRock пишет: > Procedure PROCEDURENAME is not selectable (it does not contain a SUSPEND statement). это не так давно ввели - селективные/неселективные. На 2.1. точно было и есть. Раньше не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:33 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
YuRockчччпропущено... Теперь скажи - нах.. это тайное знание автору вопроса? Возможно в фибах тоже так можно. Проверить не могу. Это было бы логично - узнавать значения параметры из Parameters, а не из Fields. А ты на питоне не кодишь? Логично было бы рассказать как это сделать на питоне. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:34 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччДYuRockпропущено... Возможно в фибах тоже так можно. Проверить не могу. Это было бы логично - узнавать значения параметры из Parameters, а не из Fields. А ты на питоне не кодишь? Логично было бы рассказать как это сделать на питоне. Нет, это было бы не логично. Питон к делфовым DataSet'ам отношения не имеет, как и вообще питон к этой теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 17:57 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
YuRockчччДпропущено... А ты на питоне не кодишь? Логично было бы рассказать как это сделать на питоне. Нет, это было бы не логично. Питон к делфовым DataSet'ам отношения не имеет, как и вообще питон к этой теме. Понятно, "Delphi". Расскажешь про BDE, UIB, FireDAC, UniDAC? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 18:17 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
12.01.2018 18:17, чччД пишет: > Расскажешь про BDE, UIB, FireDAC, UniDAC? ЯуЩЫ! (Zeos) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 18:24 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччДПонятно, "Delphi". Расскажешь про BDE, UIB, FireDAC, UniDAC? Что ты несешь. Fib+ сделан на той же основе, что и IBX. Эта основа - далеко не только "Delphi". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:08 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Ндя. Френсис Бэкон со своими идолами рода, пещеры, рынка и театра вертится в гробу как шампур в электрошашлычнице. Джентльмены, вы послушайте себя, о чём вы судачите. Датасет - не датасет... Как будто селект насильно запихивает прямо в грид записи из подготовленного набора, а не клиент сам их фетчит поштучно (с буферизацией) через свои клиентские прокладки, для Дельфей - датасорс-датасет, и сам решает что с ними делать. Возврат селективной процедуры (с suspend) после select интерпретируется вызывающим кодом так, что возвращаемые параметры трактуются как филды, а после execute они так и остаются параметрами. С невозможностью подфетчить следующий набор. Не потому что его нет, а потому что логика клиента так полагает. Вот и фсё. Серверной стороне это абсолютно фиолетово, единственно - для select/execute в PSQL предусмотрена подобная своя "типа клиентская" логика для фетча нескольких наборов параметров, маскированных под филды, или только одного при вызове процедур из процедур. Какие тут, в пень, датасеты, проживающие в Дельфях... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:11 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка> Возврат селективной процедуры (с suspend) после select интерпретируется вызывающим кодом так, что возвращаемые параметры трактуются как филды, а после execute они так и остаются параметрами. Ну вот ты уже точно про питон рассказываешь? Нет, просто пятничный троллинг? Или просто забыл добавить "я в этих ваших FIB+ как ***** в апельсинах, но..."? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:25 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
С точки зрения сервера, есть sql statements, которые создают курсор, и есть sql statements, которые не создают курсор. Курсор - вполне себе физический объект. В Firebird только запросы SELECT возвращают курсор. Запрос EXECUTE PROCEDURE (и, например, INSERT ... RETURNING) курсор не возвращает. У запросов могут быть входные и\или выходные параметры. Одновременно выходные параметры и курсор - не бывает (в Firebird). Курсор может быть только один (в SQL, на уровне BLR API их может быть много, если я его правильно понимаю, но это уже другая песня). Всё остальное - интерпретации компоненто-и драйверо- писателей. PS флаг SELECTABLE для процедур нас буквально заставили сделать те самые драйверо- писатели. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 19:48 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччДСтарый плюшевый мишка> Возврат селективной процедуры (с suspend) после select интерпретируется вызывающим кодом так, что возвращаемые параметры трактуются как филды, а после execute они так и остаются параметрами. Ну вот ты уже точно про питон рассказываешь? Нет, просто пятничный троллинг? Или просто забыл добавить "я в этих ваших FIB+ как ***** в апельсинах, но..."? Вот в питоне я точно как свинья в апельсинах, а в FIB+ есть кое-что моего личного вклада. Но я не об этом. Не надо смотреть на серверный уровень через призму клиента. Оно потому и называется клиент-сервер, что уровни функциональности разумно разделены. Но взаимосвязаны. Исходя из потребностей практики взаимосвязь может меняться, но только взаимосвязь, а не базовые принципы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 20:54 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, понимаешь, когда мы этим начинали заниматься в переходный период от десктопных баз к серверным, мы хоть десктопные понимали. А сейчас ни десктопные не понимают, ни серверные. Отсюда и возникает вот этот ступор, "чего это тут наворочено". С чем я, в общем-то, согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 20:57 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка...потому и называется клиент-сервер, что уровни функциональности разумно разделены. Но взаимосвязаны. Исходя из потребностей практики взаимосвязь может меняться, но только взаимосвязь, а не базовые принципы. Это все дьявольски интересно, тем более в пятницу вечером. Но вот даже с учетом того, что СПМв FIB+ есть кое-что моего личного вклада - утверждение СПМВозврат селективной процедуры (с suspend) после select интерпретируется вызывающим кодом так, что возвращаемые параметры трактуются как филды, а после execute они так и остаются параметрами. с точки зрения пользователя FIB+ не становится истиной. А так - да, народ измельчал и разбаловался, и хотя никто им не указ - но все хотят на готовенькое, но никто уже не хочет как Базаров - собственноручно (с другой стороны - а где на всех столько лягушек найти?)... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 21:24 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччД, ну, я еще по старинке в исходники заглядываю. А нынче, видимо, и это уже не принято. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 21:45 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Ну что, хорошая дискуссия получилась, узнал много нового. Всем спасибо за обсуждение и примеры! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2018, 22:52 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
чччД, Позволь уж мне напомнить тебе, что после обращения к любому вызову API, возвращающему с сервера данные, клиент получает сырой кусок памяти, в котором ориентируется по смещениям, определённым ранее из метаданных динамически с сервера или статически из кода самого приложения. И этот кусок проходит через десяток прокладок, прежде чем он попадёт в лапы пресловутого датасета. Которые вольны интерпретировать его как угодно, правильно или неправильно, если не учтено что это был за вызов API и какие вызовы следует делать после этого. И передавать друг другу по иерархии для последующих интерпретаций, тоже правильных или ошибочных. И серверу это абсолютно фиолетово. Компрене ву? Продолжай гнуть пальцы. И этта, у меня нынче есть привилегия. Я могу себе назначить пятницей любой день недели. И не один. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2018, 00:08 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Всего этого просто не может быть! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2018, 00:30 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
12.01.2018 19:48, hvlad пишет: > PS флаг SELECTABLE для процедур нас буквально заставили сделать те самые драйверо- писатели. это те, которые всюду понапихали ISOLATION_READ_UNCOMMITTED? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 12:16 |
|
FIBPlus: как получить возвращаемое хранимой процедурой значение?
|
|||
---|---|---|---|
#18+
Мимопроходящий12.01.2018 19:48, hvlad пишет: > PS флаг SELECTABLE для процедур нас буквально заставили сделать те самые драйверо- писатели. это те, которые всюду понапихали ISOLATION_READ_UNCOMMITTED?В каком смысле понапихали ? PS драйверописателей у нас мало, их надо беречь ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2018, 13:25 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561273]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 324ms |
total: | 485ms |
0 / 0 |