powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Параметры в предложении SELECT
110 сообщений из 110, показаны все 5 страниц
Параметры в предложении SELECT
    #39621218
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переношу код с oracle в FB 2.5
Столкнулся с использованием запроса с параметром в предложении select?
Что-то вида
Код: sql
1.
select :MyParam, Field1, ... FieldN from MyTable


Вот в таком виде FB выдало ошибку "Data type unknown"
Скормил ему требуемое приведение типа
Код: sql
1.
select cast(:MyParam as bigint), Field1, ... FieldN from MyTable



Вопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по синтаксису для подобного случая?

------------------------------------------------------
Удача - это когда желания совпадают с возможностями...
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621224
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinВопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по
синтаксису для подобного случая?

Лично я посоветую не маяться фигнёй с получением от сервера информации, передаваемой ему с
клиента. Бег на месте бессмыслен, поэтому просто убери этот параметр из запроса и
используй клиентскую переменную везде, куда ты хотел засунуть возвращаемое значение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621228
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У датасета есть тфилды и событие онкалкфилдз и датасет умеет показывать не только поля полученные с сервера.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621241
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex TorinВопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по
синтаксису для подобного случая?

Лично я посоветую не маяться фигнёй с получением от сервера информации, передаваемой ему с
клиента. Бег на месте бессмыслен, поэтому просто убери этот параметр из запроса и
используй клиентскую переменную везде, куда ты хотел засунуть возвращаемое значение.

Дмитрий, я и не думал маяться))) Это лишь упрощенный пример запроса... Что бы понять почему FB так себя ведет и как правильно написать в подобном случае синтаксически.
Там же где это надо - там сложный union и в нескольких местах этот параметр используется в предложении where.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621258
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

потому что FB не может догадаться о типе параметра без пинка. cast к нужному типу и есть такой пинок
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621259
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

в where тип можно определить в большинстве случаев
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621349
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, и совсем правильно:
select cast(:MyParam as bigint) as FieldName , Field1, ... FieldN from MyTable
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621532
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_nНу, и совсем правильно:
select cast(:MyParam as bigint) as FieldName , Field1, ... FieldN from MyTable
)))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621535
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисAlex Torin,

потому что FB не может догадаться о типе параметра без пинка. cast к нужному типу и есть такой пинок
какой недогадливый FB )))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621544
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

ок. я даю тебе параметр :p22. Какого он типа?
Даже на клиенте, до присвоения значения параметру, он тоже неизвестен. Пока я не вызову Params[0].asInteger или что-то в этом роде.

p.s. теперь смеяться можно.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621557
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinselect cast(:MyParam as bigint), Field1, ... FieldN from MyTable

select cast('Ёрш твою меть!' as bigint), Field1, ... FieldN from MyTable
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621690
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvAlex Torin,

ок. я даю тебе параметр :p22. Какого он типа?
Даже на клиенте, до присвоения значения параметру, он тоже неизвестен. Пока я не вызову Params[0].asInteger или что-то в этом роде.

p.s. теперь смеяться можно.
Когда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос!
А про клиента не понял - а на кой FB знать тип параметра до присвоения ему значения)))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621692
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvp.s. теперь смеяться можно.
Да тут плакать можно, а не смеяться...
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621721
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinна кой FB знать тип параметра до присвоения ему значенияПамять под пар-ры выделяется на этапе prepare
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621772
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladAlex Torinна кой FB знать тип параметра до присвоения ему значенияПамять под пар-ры выделяется на этапе prepare
Ну, сделал prepare - получил от сервера типы. Выделил память под них. Один раз (если это не стринг).
Потом заполняешь их (меняешь эту память - значения параметров), да и всё, execute с ними вызываешь.
Не понял пока, в чем проблема.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621776
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

ты сейчас с кем разговаривал ?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621783
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНу, сделал prepare - получил от сервера типы.

ну и какой тип ты должен получить для первого примера автора без CAST?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621785
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНе понял пока, в чем проблема.

В данном конкретном случае проблема в том, что параметр торчит в списке столбцов выборки. Соответственно, его тип определяет тип столбца.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621793
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladты сейчас с кем разговаривал ?
IBExpertYuRockНе понял пока, в чем проблема.

В данном конкретном случае проблема в том, что параметр торчит в списке столбцов выборки. Соответственно, его тип определяет тип столбца.
Всё, я понял :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621794
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисну и какой тип ты должен получить для первого примера автора без CAST?
Не заметил сразу.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621818
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinКогда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос!
Вы передаете запрос с параметром на сервер. Этот параметр ФБ не может ни с чем соотнести. Тип параметра определяется на этапе prepare.

Я провел аналогию и сымитировал ситуацию - передал вам, как серверу, параметр :p22 и попросил определить его тип. Вы не смогли. А почему сервер должен? Исходя из чего?

Меня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621873
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли отдать серверу sql:
Код: sql
1.
select * from T where S like :S

и значение параметра S за один call, без prepare?

Если можно, то может можно и
Код: sql
1.
select :S from T

передать за один call, без prepare? И тогда тип поля становится известным.

Ещё вопрос: как выполнить уже препарированный запрос:
Код: sql
1.
select * from T where Varchar5Field <> :S

со значением параметра большим чем длина поля?
Если S равен 'AAAAA', то всё ok, а если 'AAAAAA', то:
Код: plaintext
1.
2.
3.
4.
5.
Incompatible column/host variable data type.
Dynamic SQL Error.
SQL error code = -303.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
expected length 5, actual 6.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvМеня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде
"ха-ха, ФБ не может определить тип!"?

Да просто люди работали с Оракулом или МС, которые даже не пытаются определить тип
параметра и вообще не имеют такой функциональности в API.

Hommerзначение параметра S за один call, без prepare?

Можно, но внутри он всё равно сначала сделает Prepare запросу без значения пааметра, а
потом уже Execute для значения параметра.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621944
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

1. Можно
2. Можно но тогда ты должен сам указывать тип и размер параметра в приложении
3. Вроде то же можно. Но опять же придётся поработать

Ты же используешь готовые компоненты у которых строгий алгоритм. prepare->получение типов параметров, которые возвращает сервер->заполнение параметров->execute

Не получай типы параметров с сервера, заполняй всё сам, и будет тебе счастье, но это же думать надо
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621946
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvAlex TorinКогда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос!
Вы передаете запрос с параметром на сервер. Этот параметр ФБ не может ни с чем соотнести. Тип параметра определяется на этапе prepare.

Я провел аналогию и сымитировал ситуацию - передал вам, как серверу, параметр :p22 и попросил определить его тип. Вы не смогли. А почему сервер должен? Исходя из чего?

Меня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"?
Я вас просто попросил точнее мысль свою сформулировать - это знаете ли иногда важно в ИТ, что бы вас правильно понять.
А вы уже нарисовали картину маслом, что я что-то там не смог... Не стоит бежать впереди паровоза с выводами о человеке, когда сам корректно 2х слов связать не способен!

Я многое не могу сделать как сервер (и вы тоже), даже питаюсь не от электросети - потому ваше сравнение меня с сервером мягко выражаясь для хайпа...

Цирка нет - интересно почему его не интересует тип в предложении where, но интересует в select. Или для where он способен определить, а для select нет? Интересует чисто технически как задумано, что бы просто понять - без "ха-ха"...
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621950
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinЯ многое не могу сделать как сервер

А думать как программист Вы способны? То есть способны написать код, который определяет
тип параметра и его размер по своему запросу?

Alex Torinинтересно почему его не интересует тип в предложении where, но интересует в select. Или
для where он способен определить, а для select нет?

Иногда тип параметра невозможно определить и для where.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621951
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovkdvМеня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде
"ха-ха, ФБ не может определить тип!"?

Да просто люди работали с Оракулом или МС, которые даже не пытаются определить тип
параметра и вообще не имеют такой функциональности в API.
Дмитрий, ваша любовь к FB понятна и объяснима. И я тоже испытываю теплые чувства к FB ровно за то, что он позволяет и где применяется, а так же по многим другим критериям! Но зачем же такой плевок в сторону того же Oracle - как то по детски право... Да и вроде повода нет для подобных эмоций ))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621954
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex TorinЯ многое не могу сделать как сервер

А думать как программист Вы способны? То есть способны написать код, который определяет
тип параметра и его размер по своему запросу?

Alex Torinинтересно почему его не интересует тип в предложении where, но интересует в select. Или
для where он способен определить, а для select нет?

Иногда тип параметра невозможно определить и для where.

Про какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно?
Для Where иногда - это когда?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621956
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

а где плевок то? Другая реализация только и всего. Насколько я понял в ФБ тоже можно типы параметров подсовывать из приложения, но это не так просто
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621962
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисAlex Torin,

а где плевок то? Другая реализация только и всего.
Денис, тут многие с горяча тулят фразы на эмоциях (я не исключение) - тот, кому она была адресована, в контексте своих эмоций надеюсь ее понял )) Да другая реализация - я так и воспринимаю - без фанатизма...
Симонов ДенисНасколько я понял в ФБ тоже можно типы параметров подсовывать из приложения, но это не так просто
В том то и мой первоначальный вопрос был - подскажите, что я не так делаю или что не понимаю/ не знаю!

А вот фраза "думать как программист", сказанная Дмитрием как раз излишне эмоциональна, потому как получается только FB нас дисциплинирует так думать, а остальные системы только плюшками балуют )))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621966
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinНо зачем же такой плевок в сторону того же Oracle - как то по детски право... Да и вроде
повода нет для подобных эмоций ))

Нет повода? То есть ты можешь ткнуть пальцем в функцию OCI, которая позволит получить тип
данных и размер буфера для параметра у запроса "select :param from t"? Сделай это,
пожалуйста, потому что лично мои поиски такой функции успехом не увенчались.

Alex TorinПро какой именно код вы говорите - можете конкретизировать?

Я говорю про заполнение ключевых полей структуры XSQLVAR: sqltype, sqlsubtype, sqllen,
sqlscale. четыре оператора присваивания. Можете Вы написать код, который заполнит эти поля
на основании Вашего запроса "select ? from t"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621975
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinподскажите, что я не так делаю или что не понимаю/ не знаю!

Судя по всему, ты не знаешь ISC API и как с ним работать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621988
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinПро какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно?Для Where иногда - это когда?Как скомпилированная в исполняемый процессором машинный код клиентская библиотека fbclient.dll/fbclient.so должна определить тип параметра, который хотят передать в запрос? Процессоры, пока что, мысли горе-программистов читать не научились. Скажем, если в параметризованном запросе, в предложении WHERE, тип стоящего справа от оператора сравнения можно определить по типу поля, которое стоит слева от оператора сравнения, то в случае, когда исходя из подготовленного запроса тип параметра установить невозможно, разработчик БД должен задать тип параметра принудительно.
Что тут может быть непонятно?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621996
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devAlex TorinПро какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно?Для Where иногда - это когда?Как скомпилированная в исполняемый процессором машинный код клиентская библиотека fbclient.dll/fbclient.so должна определить тип параметра, который хотят передать в запрос? Процессоры, пока что, мысли горе-программистов читать не научились. Скажем, если в параметризованном запросе, в предложении WHERE, тип стоящего справа от оператора сравнения можно определить по типу поля, которое стоит слева от оператора сравнения, то в случае, когда исходя из подготовленного запроса тип параметра установить невозможно, разработчик БД должен задать тип параметра принудительно.
Что тут может быть непонятно?
НУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион!
А теперь вопрос что из перечисленного вами не соотносится с тем, что я и так делаю?
А да фраза "горе программист" - ну так какой есть - я на звезды не претендую. А вот смотрю здесь эмоциональные сопли все готовы разводить, а вдумываться в то, что оппонент пишет скилом таким явно обделены.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39621999
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinа еще то, что этот параметр присутствует и в предложении where других select, объединенных
в юнион!

Во-первых, ты так и не показал эти "другие select".
Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр.

Alex TorinА теперь вопрос что из перечисленного вами не соотносится с тем, что я и
так делаю?
Тут проблема не в том, что ты делаешь, а, скорее в том, что ты не делаешь: ты не читаешь
документацию на API используемого сервера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622000
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex TorinНо зачем же такой плевок в сторону того же Oracle - как то по детски право... Да и вроде
повода нет для подобных эмоций ))

Нет повода? То есть ты можешь ткнуть пальцем в функцию OCI, которая позволит получить тип
данных и размер буфера для параметра у запроса "select :param from t"? Сделай это,
пожалуйста, потому что лично мои поиски такой функции успехом не увенчались.
Дмитрий, выдохните! Я спросил помощи как грамотно это в FB сделать... и не собирался никоем образом сравнивать его с Oracle. Если это для вас больная тема, то просто выдохните!
Dimitry SibiryakovAlex TorinПро какой именно код вы говорите - можете конкретизировать?

Я говорю про заполнение ключевых полей структуры XSQLVAR: sqltype, sqlsubtype, sqllen,
sqlscale. четыре оператора присваивания. Можете Вы написать код, который заполнит эти поля
на основании Вашего запроса "select ? from t"?..

Покопаю для общего развития - спасибо...
Dimitry SibiryakovСудя по всему, ты не знаешь ISC API и как с ним работать.
Возможно - тогда я не достоин адекватной помощи в своем вопросе?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622005
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex Torinа еще то, что этот параметр присутствует и в предложении where других select, объединенных
в юнион!

Во-первых, ты так и не показал эти "другие select".
Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр.
Вот кусок побольше, но достаточный для понимания
Код: sql
1.
2.
3.
4.
5.
6.
7.
select v1.ISSUEID, 0 as OWNERID, v1.RORD, v1.UNITID, v1.UNITTYPE, v1.UNITNAME, v1.UNITVALUE
  from V_ISSUEUNIT v1
  where :OWNERID = 0 and v1.ISSUEID = :PK_ISSUED_ID
union all
select  cast(:PK_ISSUED_ID as bigint), v2.OWNERID, v2.RORD, v2.UNITID, v2.UNITTYPE, v2.UNITNAME, v2.UNITVALUE
  from V_UNITREL v2
  where :OWNERID <> 0 and v2.OWNERID = :OWNERID



Dimitry SibiryakovAlex TorinА теперь вопрос что из перечисленного вами не соотносится с тем, что я и
так делаю?
Тут проблема не в том, что ты делаешь, а, скорее в том, что ты не делаешь: ты не читаешь
документацию на API используемого сервера.

это да - согласен - в конкретном API я не силен! Потому и хотел спросить как правильно сделать...
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622006
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinНУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион!После чего ты задаешь его принудительно в параметре на клиенте? После того, как Prepare запроса уже вывалил ошибку? Да сколько угодно! Всё равно, что пытаться впрыгнуть с перрона в вагон поезда, который уже ушёл. Если твои UNION SELECT с, якобы, корректно заданным параметром идут после SELECT с некорректно заданным параметром, сервер не обязан "глухим дважды служить обедню" и выполнять второй проход в алгоритме подготовки запроса. Не можешь корректно задать параметры - используй EXECUTE BLOCK с типизированными входящими параметрами!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622008
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinВот кусок побольше, но достаточный для понимания

Ты таки не поверишь, но это не запрос Firebird. У Firebird нет именованных параметров. И
именно поэтому, то, что ты считаешь "одним параметром" на основании его имени - на самом
деле два разных параметра.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622010
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinПотому и хотел спросить как правильно сделать...

В данном случае будет правильно использовать хранимую процедуру или execute block.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622014
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAlex TorinВот кусок побольше, но достаточный для понимания
Ты таки не поверишь, но это не запрос Firebird. У Firebird нет именованных параметров. И
именно поэтому, то, что ты считаешь "одним параметром" на основании его имени - на самом
деле два разных параметра.
Почему, вам верю! Но для меня это и вправду новость)))
Dimitry SibiryakovAlex TorinПотому и хотел спросить как правильно сделать...
В данном случае будет правильно использовать хранимую процедуру или execute block.
Спасибо за совет!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622015
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinНо для меня это и вправду новость)))

И вот тут-то мы и возвращаемся к вопросу нечтения документации на используемый продукт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622017
Dmitry Kurbsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinDimitry SibiryakovИногда тип параметра невозможно определить и для where.
Для Where иногда - это когда?
Код: sql
1.
2.
3.
select Field1,Field2
from Table1
where Field1=:Param1

Тут сервер может догадаться, что тип параметра Param1 такой же, как и тип поля Field1.

Код: sql
1.
2.
3.
select Field1,Field2
from Table1
where :Param1=1

И тут может догадаться, что Param1 - это целое.

Код: sql
1.
2.
3.
select Field1,Field2
from Table1
where :Param1=:Param2

А вот тут получишь "Data type unknown".

Код: sql
1.
2.
select :Param1
from Table1

И тут, естественно, тоже.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622022
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinDimitry Sibiryakovпропущено...

Во-первых, ты так и не показал эти "другие select".
Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр.
Вот кусок побольше, но достаточный для понимания
Код: sql
1.
2.
3.
4.
5.
6.
7.
select v1.ISSUEID, 0 as OWNERID, v1.RORD, v1.UNITID, v1.UNITTYPE, v1.UNITNAME, v1.UNITVALUE
  from V_ISSUEUNIT v1
  where :OWNERID = 0 and v1.ISSUEID = :PK_ISSUED_ID
union all
select  cast(:PK_ISSUED_ID as bigint), v2.OWNERID, v2.RORD, v2.UNITID, v2.UNITTYPE, v2.UNITNAME, v2.UNITVALUE
  from V_UNITREL v2
  where :OWNERID <> 0 and v2.OWNERID = :OWNERID

Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622031
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devAlex TorinНУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион!
После чего ты задаешь его принудительно в параметре на клиенте? После того, как Prepare запроса уже вывалил ошибку? Да сколько угодно! Всё равно, что пытаться впрыгнуть с перрона в вагон поезда, который уже ушёл.
Нет - параметр нормально кушается, а ошибка происходит уже на стадии выполнения, отладка возвращает значения параметров, которые там присутствуют! Если вы мне объясните, как я на клиенте могу после вываливания ошибки задать параметр, то вы меня сильно удивите)))
rdb_devЕсли твои UNION SELECT с, якобы, корректно заданным параметром идут после SELECT с некорректно заданным параметром, сервер не обязан "глухим дважды служить обедню" и выполнять второй проход в алгоритме подготовки запроса.
Смотрим на код, который я выше написал Дмитрию, и рыдаем над вашим умозаключением )))
rdb_devНе можешь корректно задать параметры - используй EXECUTE BLOCK с типизированными входящими параметрами!
Ну вот старался же человек, хотел и пять копеек по делу вставить, но не съязвить не смог... Ну вот когда же детство то в попе переиграет и желание задеть и детские обиды пройдут)))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622043
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Kurbsky
Код: sql
1.
2.
3.
select Field1,Field2
from Table1
where :Param1=:Param2

А вот тут получишь "Data type unknown".

Прикольно - это для меня тоже новость и тоже только для FB получается.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622047
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devAlex Torinпропущено...

Вот кусок побольше, но достаточный для понимания
Код: sql
1.
2.
3.
4.
5.
6.
7.
select v1.ISSUEID, 0 as OWNERID, v1.RORD, v1.UNITID, v1.UNITTYPE, v1.UNITNAME, v1.UNITVALUE
  from V_ISSUEUNIT v1
  where :OWNERID = 0 and v1.ISSUEID = :PK_ISSUED_ID
union all
select  cast(:PK_ISSUED_ID as bigint), v2.OWNERID, v2.RORD, v2.UNITID, v2.UNITTYPE, v2.UNITNAME, v2.UNITVALUE
  from V_UNITREL v2
  where :OWNERID <> 0 and v2.OWNERID = :OWNERID

Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра.
это понятно - спасибо!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622059
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinНет - параметр нормально кушается, а ошибка происходит уже на стадии выполнения, отладка возвращает значения параметров, которые там присутствуют! Если вы мне объясните, как я на клиенте могу после вываливания ошибки задать параметр, то вы меня сильно удивите)))Facepalm!
Еще раз, для тех, кто в бронепоезде, объясняю, как это работает:

1. Высокоуровневая обёртка нативной клиентской библиотеки, получая команду на подготовку запроса, парсит запрос с именованными параметрами и определяет их очередность. В случае твоего запроса:
Код: sql
1.
2.
3.
4.
5.
6.
7.
select v1.ISSUEID, 0 as OWNERID, v1.RORD, v1.UNITID, v1.UNITTYPE, v1.UNITNAME, v1.UNITVALUE
  from V_ISSUEUNIT v1
  where :OWNERID = 0 and v1.ISSUEID = :PK_ISSUED_ID
union all
select  cast(:PK_ISSUED_ID as bigint), v2.OWNERID, v2.RORD, v2.UNITID, v2.UNITTYPE, v2.UNITNAME, v2.UNITVALUE
  from V_UNITREL v2
  where :OWNERID <> 0 and v2.OWNERID = :OWNERID

определит, что параметры с индексами 1, 4, 5 имеют имя "OWNERID", а параметры с индексами 2 и 3 имеют имя "PK_ISSUED_ID".

2. Далее, высокоуровневая обертка меняет имена параметров на символ, используемый конкретной СУБД для параметров параметризованного запроса (обычно, это символ "?") и передает модифицированный запрос на подготовку серверу. Серверу, как становится очевидно, совершенно пофиг на имена параметров, указанные в переданном высокоуровневой обёртке запросе и каждый "?" при подготовке запроса он воспринимает как отдельный параметр;

3. Если серверу удается определить все типы этих безымянных параметров и подготовить запрос, сервер возвращает нативной библиотеке количество и типы всех этих параметров, значения которых должна заполнить высокоуровневая обёртка в ранее определенной очередности, а именно - для параметров с индексами 1, 4 и 5 задать значение параметра "OWNERID", а для параметров с индексами 2 и 3 задать значение параметра "PK_ISSUED_ID";

Так работает подавляющее число СУБД, их нативных библиотек и даже ODBC с незапамятных времен, включая MS SQL, MySQL, Interbase, FirebirdSQL и прочих.
Это понятно?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622062
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devAlex Torinпропущено...

Вот кусок побольше, но достаточный для понимания
Код: sql
1.
2.
3.
4.
5.
6.
7.
select v1.ISSUEID, 0 as OWNERID, v1.RORD, v1.UNITID, v1.UNITTYPE, v1.UNITNAME, v1.UNITVALUE
  from V_ISSUEUNIT v1
  where :OWNERID = 0 and v1.ISSUEID = :PK_ISSUED_ID
union all
select  cast(:PK_ISSUED_ID as bigint), v2.OWNERID, v2.RORD, v2.UNITID, v2.UNITTYPE, v2.UNITNAME, v2.UNITVALUE
  from V_UNITREL v2
  where :OWNERID <> 0 and v2.OWNERID = :OWNERID

Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра.
Вы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры?
Код: sql
1.
2.
3.
4.
5.
execute block (P1 integer = :P) returns (Res integer) as
begin
  :Res = :P1 + :P1;
  suspend;
end
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622064
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как
тогда обёртки не знающие о execute block парсят его параметры?

Криво. Поэтому execute block в таких обёртках и не работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622065
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры?А что им еще остается? Какие еще могут быть варианты, чтобы определить очередность параметров и передать нативной библиотеке запрос с "?" вместо именованных параметров?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622069
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКриво. Поэтому execute block в таких обёртках и не работает.В FIBPlus, вроде, работает. Просто парсит и меняет лишь входные параметры EXECUTE BLOCK, не трогая то, что внутри BEGIN...END.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622086
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

это специальная обработка sql. А так, конечно, таким запросам, в том числе create procedure, у которых внутри параметры, надо ParamCheck:=False делать. Иначе компоненты с ума сходят, пытаясь найти параметры в тексте.
Впрочем, всё это новость только для Alex Torin.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622089
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВпрочем, всё это новость только для Alex Torin.Не только! Еще и для Hommer. :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622097
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, rdb_dev
Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... )))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622099
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, прикинь, он думает - мы шутим.
Alex Torinkdv, rdb_dev
Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... )))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622103
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как
тогда обёртки не знающие о execute block парсят его параметры?

Криво. Поэтому execute block в таких обёртках и не работает.

А при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди.
Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке.
Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622105
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devkdv, прикинь, он думает - мы шутим.
Alex Torinkdv, rdb_dev
Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... )))
Вы ошибаетесь - я вообще думать не умею... Потому буду созерцать - продолжайте!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622108
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerА при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди.
Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке.
Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку.Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622109
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinВы ошибаетесь - я вообще думать не умею...Думать не умеешь, читать документацию не умеешь... Есть что-то, что ты умеешь, кроме как глупостями по клавиатуре стучать?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622121
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devHommerА при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди.
Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке.
Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку.Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут.
Не нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622124
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devAlex TorinВы ошибаетесь - я вообще думать не умею...Думать не умеешь, читать документацию не умеешь... Есть что-то, что ты умеешь, кроме как глупостями по клавиатуре стучать?
Это детская наивность, пубертатная глупость али старческий маразм? Вы с какой целью интересуетесь?
Кстати
rdb_devкроме как глупостями по клавиатуре стучать
это ваш пик косноязычия или вы способны на большее? ))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622126
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommerrdb_devпропущено...
Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут.
Не нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.

А зачем при выходе новой версии firebird что-то переписывать?
Старые парсилки со старыми конструкциями отлично работают.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622127
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerНе нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.Какая драма ! Что-то я не встречал и десятка "пострадавших" за всё время существования EXEC BLOCK.
Это примерно лет за 14
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622128
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerНе нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.Конечно не нужно! Используй ISC API нативной библиотеки, а при передаче параметров используй ту очередность, в которой ты употребил эти параметры в запросе. В чем проблема?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622133
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinЭто детская наивность, пубертатная глупость али старческий маразм?Ты уж сам, как-нибудь, определись, что из перечисленного соответствует твоим перлам.

Alex TorinВы с какой целью интересуетесь?С простой! Интересно - занафига ты пузыришь соплями на специализированном форуме разработчиков, когда в интернете огромное количество чатов и форумов блондинок тебе подстать? Не хочешь читать документацию и комментарии знающих людей - валяй блондинок развлекать!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622160
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
А вы с форума блондинок сюда пришли? Или вы чередуете? Откуда такая осведомленность )))

Мда - интернет реально придает людям крылья и нивелирует чувство самосохранения ))) Но ведь есть и несомненные плюсы - у таких как вы есть несомненный шанс пожить подольше...

Послушайте, это ваш приватный форум? Нет? Тогда чем обоснована такая вонь с вашей стороны? Мнением, что вы гений?
Процитирую одного киногероя "и что - у тебя кровь не бежит?" Попуститесь, гениальный вы наш!

За сим откланиваюсь - лимит общения с гениями!))) Вопросы считайте риторическими и не утруждайтесь!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622178
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devDimitry SibiryakovКриво. Поэтому execute block в таких обёртках и не работает.В FIBPlus, вроде, работает. Просто парсит и меняет лишь входные параметры EXECUTE BLOCK, не трогая то, что внутри BEGIN...END.
У меня в древнем IBX тоже EXECUTE BLOCK нормально парсится. Ни разу проблем не было. Он при парсинге параметров (замене их на ?) не различает тип запроса. А проблемы, которые могут возникнуть в таком случае при
Код: sql
1.
2.
3.
4.
5.
execute block (P1 integer = :P) returns (Res integer) as
begin
  :Res = :P1 + :P1;
  suspend;
end


я обхожу просто - пишу
Код: sql
1.
2.
3.
4.
5.
execute block (P1 integer = :P) returns (Res integer) as
begin
  Res = P1 + P1;
  suspend;
end


либо делаю процедуру. execute block вообще использую крайне редко, только при обновлении баз иногда (и в этих скриптах, конечно, параметров нет - ParamCheck=False стоит).
Считаю, это не самая хорошая практика.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622183
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinя попкорном запасся
Ты реально гонишь.
Тебе объяснили, как всё работает.
Тебе предложили, как сделать то, что ты хочешь (после prepare перед execute самому установить тип параметра, какой ты хочешь, если это надо).
И что ты после этого еще ждешь под попкорн?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622189
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Наверное, занавес.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622205
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAlex Torinя попкорном запасся
Ты реально гонишь.
Тебе объяснили, как всё работает.
Тебе предложили, как сделать то, что ты хочешь (после prepare перед execute самому установить тип параметра, какой ты хочешь, если это надо).
И что ты после этого еще ждешь под попкорн?
Так вроде я даже спасибо сказал! В чем гон? Или вы эмоционально неуравновешенный сарказм со стороны некоторого быдла отождествляете в одной куче с советами?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622211
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinИли вы эмоционально неуравновешенный сарказм со стороны некоторого быдла
В таких вопросах необходимо с себя начинать
Alex Torinотождествляете в одной куче с советами
Это интернет. Не платный вуз.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622226
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinА вы с форума блондинок сюда пришли? Или вы чередуете? Откуда такая осведомленность )))Наивно полагаешь, что ты тут первая блондинка? Мне и тут за глаза общения с такими блондинками...
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622240
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAlex TorinИли вы эмоционально неуравновешенный сарказм со стороны некоторого быдла
В таких вопросах необходимо с себя начинать
Alex Torinотождествляете в одной куче с советами
Это интернет. Не платный вуз.
А то я не знаю... Только вот почему тогда гоню только я?)))
Да и кроме как потролить их я больше не имею другой возможности с ними пообщаться на их уровне! Для меня к сожалению, для них к счастью ))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622247
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

Я чего-то проспал разборку. А у Вас запрос без хранимки, без Execute Block?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622248
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

не.
Код: sql
1.
select :f1 as f1 from rdb$database



тип параметра не определяет. Особой разборки то нет. Я не знаю чего они тут сцепились из-за фигни.

Alex Torin,

не знаю как ты проверял но exception появляется уже на этапе prepare, а не выполнения как ты утверждаешь
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622268
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

А не правильней ситуацию отработать как в хранимке - типа "Неизвестная переменная". Хотя, что в лоб, что по лбу. Мне не понятен смысл такой конструкции. Зачем в селекте переменная, которая нигде не определена? Чисто ради спортивного интереса?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622271
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladHommerНе нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.Какая драма ! Что-то я не встречал и десятка "пострадавших" за всё время существования EXEC BLOCK.
Это примерно лет за 14
Т.е. пострадавшие были.

Вот код из UIB:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
  function TSQLParams.Parse(const SQL: UnicodeString): UnicodeString;
  const
    Identifiers: set of AnsiChar = ['a'..'z', 'A'..'Z', '0'..'9', '_', '$'];
  var
    Src: PWideChar;
    Dest, idlen: Word;

    procedure next;
    begin
      inc(dest);
      Result[dest] := WideChar(Src^);
      inc(Src);
    end;

    procedure Skip(c: WideChar);
    begin
      repeat
        next;
        if Src^ = c then
        begin
          Next;
          Break;
        end;
      until (Src^ = #0);
    end;

    {$IFDEF FPC}
    function PrevChar(c: PWideChar): WideChar;
    begin
      dec(c);
      result := c^;
    end;
    {$ENDIF}
  begin
    Clear;
    Src := PWideChar(SQL);
    Dest := 0;
    SetLength(Result, Length(SQL));
    while true do
      case Src^ of
        // eof
        #0 :  begin
                SetLength(Result, Dest);
                Exit;
              end;
        // normal comments
        '/' : if Src[1] = '*' then
              begin
                inc(Src, 2);
                while (Src^ <> #0) do
                  if (Src^ = '*') and (Src[1] = '/') then
                  begin
                    inc(Src, 2);
                    Break;
                  end else
                    inc(Src);
              end else
                next;
        // Firebird comments -- My comment + (eol or eof)
        {.$IFDEF FB15_UP}
        '-' : if Src[1] = '-' then
              begin
                inc(Src, 2);
                while not ({$IFDEF UNICODE}(Src^ < #256) and {$ENDIF}(AnsiChar(Src^) in [#0, #13, #10])) do
                  inc(Src);
              end else
                next;
        {.$ENDIF}
        // text ''
        '''': Skip('''');
        // text ""
        '"' : Skip('"');
        // Unnamed Input
        '?' : begin
                AddField('');
                Next;
              end;
        '[' : Skip(']');
        // Named Input
        ':' : begin
                inc(dest);
                Result[dest] := '?';
                inc(Src);
                idlen := 0;
                // quoted identifiers
                if Src[idlen] = '"' then
                begin
                  inc(Src);
                  while true do
                    if {$IFDEF UNICODE}(Src[idlen] < #256) and {$ENDIF}(AnsiChar(Src[idlen]) in [#0, '"']) then
                      Break else
                      inc(idlen);
                end else
                // unquoted identifiers
                  while {$IFDEF UNICODE}(Src[idlen] < #256) and {$ENDIF}(AnsiChar(Src[idlen]) in Identifiers) do inc(idlen);
                AddField(copy(Src, 1, idlen));
                inc(Src, idlen);
                if Src^ = '"' then inc(Src);
              end;
        // skip everything when begin identifier found !
        // in procedures
        'b','B':
          begin
            if not ((dest > 0) and {$IFDEF UNICODE}(src[-1] < #256) and {$ENDIF} ({$IFDEF FPC}PrevChar(src){$ELSE}AnsiChar(src[-1]){$ENDIF}
              in Identifiers)) and (StrIComp(PWideChar(copy(Src, 0, 5)), 'begin') = 0) and
                not ({$IFDEF UNICODE}(Src[5] < #256) and{$ENDIF}(AnsiChar(Src[5]) in Identifiers)) then
                  while (Src^ <> #0) do Next else next;
          end;
        // declare should also stop param parsing, as a declare cursor statement
        // may contain variables.
        'd','D':
          begin
            if not ((dest > 0) and {$IFDEF UNICODE}(src[-1] < #256) and {$ENDIF} ({$IFDEF FPC}PrevChar(src){$ELSE}AnsiChar(src[-1]){$ENDIF}
              in Identifiers)) and (StrIComp(PWideChar(copy(Src, 0, 7)), 'declare') = 0) and
                not ({$IFDEF UNICODE} (Src[7] < #256) and {$ENDIF}(AnsiChar(Src[7]) in Identifiers)) then
                  while (Src^ <> #0) do Next else next;
          end;
      else
        next;
      end;
  end;


Обработка DECLARE там только благодаря тому, что в DECLARE могут быть курсоры.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
EXECUTE BLOCK(NAME VARCHAR(20) = :NAME1)
RETURNS(
  RNAME CHAR(31)
)AS
  DECLARE C CURSOR FOR (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS where RDB$RELATION_NAME <> :NAME);
BEGIN
  OPEN C;
  FETCH C INTO :RNAME;
  WHILE (ROW_COUNT > 0) DO
  BEGIN
    SUSPEND;
    FETCH C INTO :RNAME;
  END
  CLOSE C;
END


А если в V5 захочется создать короткий алиас для DECLARE, например VAR?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
EXECUTE BLOCK(NAME VARCHAR(20) = :NAME1)
RETURNS(
  RNAME CHAR(31)
)AS
VAR
  P1 INTEGER;
  P2 INTEGER;
  P3 CURSOR FOR (SELECT RDB$RELATION_NAME FROM RDB$RELATIONS where RDB$RELATION_NAME <> :Name);
BEGIN
END


Или не захочется т.к. поломаются парсеры? :)


Ещё.
В аудите параметры естественно без имён:
Код: sql
1.
insert into RDB$RELATIONS(RDB$SYSTEM_FLAG, RDB$FIELD_ID, RDB$FORMAT) values(:SYSTEM_FLAG, :FIELD_ID, :FORMAT);


Код: plaintext
1.
2.
3.
4.
5.
6.
insert into RDB$RELATIONS(RDB$SYSTEM_FLAG, RDB$FIELD_ID, RDB$FORMAT) values(?  , ?  , ?  );


param0 = smallint, "1"
param1 = smallint, "2"
param2 = smallint, "3"

Не удобно ведь.
Мало того что библиотекам доступа нужно самим парсить sql и заменять имена на вопросики, но ещё и пользователи библиотек остаются без имён параметров в логе.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622272
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

ты сначала топик почитай. Я же упростил его случай
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622274
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

я не понял на фига там в DECLARE лезть было, в 3.0 ещё DECLARE [PROCEDURE | FUNCTION]. Влад показывал обработку в EXECUTE STATEMENT и там всё было как-то проще
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622275
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerМало того что библиотекам доступа нужно самим парсить sql и заменять имена на вопросики,
но ещё и пользователи библиотек остаются без имён параметров в логе.

Так никто же не заставляет ни библиотеки, ни пользователей эти самые именованные параметры
использовать. Я вот в своих запросах использую неименованные параметры и никакого
дискомфорта не чувствую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622278
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerТ.е. пострадавшие были.Кавычки куда дел ?

Были те, кто делает реальную работу, а не ноет по любому поводу.
Парсеры в компронентах\оболочках были всегда - ибо именованных пар-ров в движке нет.
Соотв. чуть допилить парсер, чтобы понимал EXECUTE BLOCK и не лез за его заголовок - вообще не проблема.
Кто сам не осилил - спрашивал, да. Таких не много было.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622281
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денися не понял на фига там в DECLARE лезть былоЯ тоже.
Конкретно для EXEC BLOCK можно останавливать парсинг сразу после AS (можно и раньше, но это чуть сложнее).
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622291
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIAlex Torin,

Я чего-то проспал разборку. А у Вас запрос без хранимки, без Execute Block?
Да. без того и без того. И собственно сделать через них это понятно что можно. Собственно Дмитрий еще в начале об этом и подсказывал...
А "разборка" к делу не относится)) Не обращайте внимания!
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622299
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисHommer,

я не понял на фига там в DECLARE лезть было, в 3.0 ещё DECLARE [PROCEDURE | FUNCTION]. Влад показывал обработку в EXECUTE STATEMENT и там всё было как-то проще
Не нафига, а зачем :)
Под спойлером просто пример как разработчик UIB решал вопрос с преобразованием sql с именами параметров в sql с вопросиками.
decare cursor когда появился? А что ещё появится? И парсер переделывать чтоли? Нет конечно. Нужно научиться самим работать с именами параметров. Это хорошее решение.
Появляются новые языки, появляются новые программисты, кто-то пишет либы, кто-то ими пользуется. С вопросиками просто не удобно. Их конечно нужно оставить, но и нормальный вариант реализовать тоже.
Представьте если бы в Delphi не было именованных параметров, а были бы только вопросики. Было бы скучно.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622301
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torinпочему тогда гоню только я?)))
Эта галлюцинация тебе привиделась - никто не утверждал, что только ты. Как и другие глюки. Вот я и говорю, что гонишь :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622305
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerС вопросиками просто не удобно.

Что именно с ними неудобно делать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622307
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисAlex Torin,

не знаю как ты проверял но exception появляется уже на этапе prepare, а не выполнения как ты утверждаешь
Я не совсем это утверждал - потому как отвечал в контексте заданного мне вопроса! Согласен что не совсем корректно сформулировал, но оппонент от меня этого и не требовал))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622309
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAlex Torinпочему тогда гоню только я?)))
Эта галлюцинация тебе привиделась - никто не утверждал, что только ты. Как и другие глюки. Вот я и говорю, что гонишь :)
Ээээ...
YuRockТы реально гонишь.
...
И что ты после этого еще ждешь под попкорн?
А это не значило что только я? ))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622310
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Torin,

короче смирись и прими как есть. CAST к нужному типу все юзают и не жжужат
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622312
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЧто именно с ними неудобно делать?
Не то, что неудобно.
Просто кажется нелогичным один и тот же параметр сознавать одинаковым по несколько раз. Память под структуру, память под значения (одни и те же) параметра выделять и заполнять. Несколько раз.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622313
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex TorinYuRockТы реально гонишь.
...
И что ты после этого еще ждешь под попкорн?
А это не значило что только я? ))
Даже боюсь предположить, как к такому выводу можно было прийти.
Конечно же не означало. Я, например, тоже гоню, раз с тобой такой обмен бессмысленными сообщениями произвёл :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622320
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladСимонов Денися не понял на фига там в DECLARE лезть былоЯ тоже.
Конкретно для EXEC BLOCK можно останавливать парсинг сразу после AS (можно и раньше, но это чуть сложнее).
А если вы добавите новую конструкцию?
Как человеку написать преобразователь имён параметров в вопросики один раз и на всё время? Мониторить изменения в языке - очень плохой вариант. Вам ведь не комфортно находиться в ситуации, когда ваши изменения в языке могут поломать кучу библиотек доступа? Ломать не захочется и придётся подстраивать язык под реалии. Пока существует эта зависимость, чем-то придётся пожертвовать когда придёт время, или библиотеками или языком. Поэтому зависимость лучше убрать. А ещё лучше добавить работу с именованными параметрами, ведь это во всех либах нужно. И аудит будет дружелюбней. Одни плюсы :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622326
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

ну тыж умный. Вон Job в FB добавляешь, вот и займись. Хорошо напишешь глядишь и коммит твой примут и API расширят
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622331
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerА если вы добавите новую конструкцию?Ты серьёзно считаешь, что после EXEC BLOCK не было добавлено ни одной новой конструкции ?
Давай ты сначала поймёшь - что именно нужно "парсить", как именно и в каком объёме, а уже потом будешь рассказывать про страшшшные несовместимости.
Пример с парсингом DECLARE показывает только уровень некомпетентности того, кто это писал. Ты пока что в той же обойме.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622332
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockAlex Torinпропущено...

А это не значило что только я? ))
Даже боюсь предположить, как к такому выводу можно было прийти.
Конечно же не означало. Я, например, тоже гоню, раз с тобой такой обмен бессмысленными сообщениями произвёл :)
Я говорил в контексте данной темы, а не вообще! Потому как второе понятно без слов )))
Ладно - проехали.. не суть важно собственно!))
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622334
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerКак человеку написать преобразователь имён параметров в вопросики один раз и на всё время?

Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу
преобразователя сэкономится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622348
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladHommerА если вы добавите новую конструкцию?Ты серьёзно считаешь, что после EXEC BLOCK не было добавлено ни одной новой конструкции ?
Давай ты сначала поймёшь - что именно нужно "парсить", как именно и в каком объёме, а уже потом будешь рассказывать про страшшшные несовместимости.
Вот сделаете вы в V5 например такую конструкцию (входные параметры: SYSTEM_FLAG и P1):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
  (select max(Res) from (
    execute block (rel_name varchar(128) = r.rdb$relation_name) returns (Res integer) as
    begin
      Res = select count(*) from Rdb$Relation_Fields where (RDB$RELATION_NAME = :rel_name) and (RDB$SYSTEM_FLAG = :SYSTEM_FLAG)
      suspend;
    end
  )),
  cast(:P1 as integer)
from rdb$relations r


или такую (параметр P и P2):
Код: sql
1.
2.
3.
4.
5.
6.
select * from
  execute block (P1 integer = :P) returns (Res integer) as
  begin
    Res = :P1 + :P2;
    suspend;
  end


а все существующие библиотеки не смогут их обрабатывать. Потому что не смогут понять какие параметры нужно преобразовывать в ?, а какие нет.

Возможно в V5 вы не захотите чтобы параметр SYSTEM_FLAG из первого примера был виден внутри EXECUTE BLOCK, а возможно захотите. Под каждый вариант свой парсер. И сейчас его не написать, придётся дождаться вашего решения.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622349
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

не надо фантазировать всякую чушь. Такое точно делать не будут
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622350
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

продолжай прикидываться, у тебя получается.
Пока опять ник менять не придётся
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622356
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerКак человеку написать преобразователь имён параметров в вопросики один раз и на всё время?

Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу
преобразователя сэкономится.

А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :)
Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622358
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисKreatorXXI,

ты сначала топик почитай. Я же упростил его случай

Конечно, весь топик прочитал (уже было три страницы почти). Но так и не понял ради чего копья ломаются? В запросе ТС с юнионом накой неопределённая переменная? Чисто теоретическая возня? FB должен ноль подставлять на автомате?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622359
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladHommer,

продолжай прикидываться, у тебя получается.
Пока опять ник менять не придётся
Не понял. Что я сказал такого? Мы вроде про технические вещи говорим. Я по крайней мере.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622360
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerА если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно
закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не
ошибиться :)

Написать запрос сразу без лишних параметров - никак не получается?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622361
Alex Torin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIСимонов ДенисKreatorXXI,

ты сначала топик почитай. Я же упростил его случай

Конечно, весь топик прочитал (уже было три страницы почти). Но так и не понял ради чего копья ломаются? В запросе ТС с юнионом накой неопределённая переменная? Чисто теоретическая возня? FB должен ноль подставлять на автомате?
С юнионом это часть конкретного рабочего запроса - что именно вам не понятно? логика запроса?
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622362
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerА если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно
закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не
ошибиться :)

Написать запрос сразу без лишних параметров - никак не получается?..

Он был написан без лишних параметров, но "условия изменились" или "код переиспользовался в другом месте" или "стало нужно написать if для некоторых условий". Всё меняется, переиспользуется, становится гибче. С индексным доступом действительно нужно писать сразу правильно и не давать окружающему миру меняться настолько чтобы пришлось рефакторить :)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622363
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

в принципе FB мог бы просто сказать что есть некий параметр с неопределённым типом в момент prepare, а не кидать ошибку. Тогда можно было бы на клиенте самостоятельно подготовить входное сообщение и буфер и выполнять запрос уже с ними. Но тут я могу ошибаться, непосредственно с API часто не работаю.
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622367
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв принципе FB мог бы

Теоретически это возможно, но перепахивать пласты кода тридцатилетней выдержки тупо некому.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622381
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerDimitry Sibiryakovпропущено...

Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу
преобразователя сэкономится.

А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :)
Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам.

Я давно вынашиваю идею. Чтобы можно было написать "селект кое-что из кое-чего". А потом бросать её серверу в любой момент времени и в любом месте приложения или ХП, а он пусть поймёт что мне надо. Это столько сэкономит трудозатрат... мнеее... а! программистов! что будет просто научно-техническая революция. В мировом масштабе. Но ведь не поймут-с, Азия-с... (С)
...
Рейтинг: 0 / 0
Параметры в предложении SELECT
    #39622392
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаHommerпропущено...

А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :)
Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам.

Я давно вынашиваю идею. Чтобы можно было написать "селект кое-что из кое-чего". А потом бросать её серверу в любой момент времени и в любом месте приложения или ХП, а он пусть поймёт что мне надо. Это столько сэкономит трудозатрат... мнеее... а! программистов! что будет просто научно-техническая революция. В мировом масштабе. Но ведь не поймут-с, Азия-с... (С)Ты опоздал.
Твою идею уже давно реализовали:
http://button.dekel.ru/
...
Рейтинг: 0 / 0
110 сообщений из 110, показаны все 5 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Параметры в предложении SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]