|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Переношу код с oracle в FB 2.5 Столкнулся с использованием запроса с параметром в предложении select? Что-то вида Код: sql 1.
Вот в таком виде FB выдало ошибку "Data type unknown" Скормил ему требуемое приведение типа Код: sql 1.
Вопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по синтаксису для подобного случая? ------------------------------------------------------ Удача - это когда желания совпадают с возможностями... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:34 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinВопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по синтаксису для подобного случая? Лично я посоветую не маяться фигнёй с получением от сервера информации, передаваемой ему с клиента. Бег на месте бессмыслен, поэтому просто убери этот параметр из запроса и используй клиентскую переменную везде, куда ты хотел засунуть возвращаемое значение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:37 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
У датасета есть тфилды и событие онкалкфилдз и датасет умеет показывать не только поля полученные с сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:42 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAlex TorinВопрос - может кто подскажет почему FB к этому придирается и может что посоветуете по синтаксису для подобного случая? Лично я посоветую не маяться фигнёй с получением от сервера информации, передаваемой ему с клиента. Бег на месте бессмыслен, поэтому просто убери этот параметр из запроса и используй клиентскую переменную везде, куда ты хотел засунуть возвращаемое значение. Дмитрий, я и не думал маяться))) Это лишь упрощенный пример запроса... Что бы понять почему FB так себя ведет и как правильно написать в подобном случае синтаксически. Там же где это надо - там сложный union и в нескольких местах этот параметр используется в предложении where. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:50 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, потому что FB не может догадаться о типе параметра без пинка. cast к нужному типу и есть такой пинок ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:12 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, в where тип можно определить в большинстве случаев ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:13 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Ну, и совсем правильно: select cast(:MyParam as bigint) as FieldName , Field1, ... FieldN from MyTable ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:26 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
alex_p_nНу, и совсем правильно: select cast(:MyParam as bigint) as FieldName , Field1, ... FieldN from MyTable ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 19:03 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов ДенисAlex Torin, потому что FB не может догадаться о типе параметра без пинка. cast к нужному типу и есть такой пинок какой недогадливый FB ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 19:05 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, ок. я даю тебе параметр :p22. Какого он типа? Даже на клиенте, до присвоения значения параметру, он тоже неизвестен. Пока я не вызову Params[0].asInteger или что-то в этом роде. p.s. теперь смеяться можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 19:23 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinselect cast(:MyParam as bigint), Field1, ... FieldN from MyTable select cast('Ёрш твою меть!' as bigint), Field1, ... FieldN from MyTable ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 19:56 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdvAlex Torin, ок. я даю тебе параметр :p22. Какого он типа? Даже на клиенте, до присвоения значения параметру, он тоже неизвестен. Пока я не вызову Params[0].asInteger или что-то в этом роде. p.s. теперь смеяться можно. Когда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос! А про клиента не понял - а на кой FB знать тип параметра до присвоения ему значения))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 08:28 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdvp.s. теперь смеяться можно. Да тут плакать можно, а не смеяться... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 08:30 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinна кой FB знать тип параметра до присвоения ему значенияПамять под пар-ры выделяется на этапе prepare ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 09:17 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
hvladAlex Torinна кой FB знать тип параметра до присвоения ему значенияПамять под пар-ры выделяется на этапе prepare Ну, сделал prepare - получил от сервера типы. Выделил память под них. Один раз (если это не стринг). Потом заполняешь их (меняешь эту память - значения параметров), да и всё, execute с ними вызываешь. Не понял пока, в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:24 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRock, ты сейчас с кем разговаривал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:30 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockНу, сделал prepare - получил от сервера типы. ну и какой тип ты должен получить для первого примера автора без CAST? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:32 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockНе понял пока, в чем проблема. В данном конкретном случае проблема в том, что параметр торчит в списке столбцов выборки. Соответственно, его тип определяет тип столбца. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:33 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
hvladты сейчас с кем разговаривал ? IBExpertYuRockНе понял пока, в чем проблема. В данном конкретном случае проблема в том, что параметр торчит в списке столбцов выборки. Соответственно, его тип определяет тип столбца. Всё, я понял :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:45 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов Денисну и какой тип ты должен получить для первого примера автора без CAST? Не заметил сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 10:45 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinКогда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос! Вы передаете запрос с параметром на сервер. Этот параметр ФБ не может ни с чем соотнести. Тип параметра определяется на этапе prepare. Я провел аналогию и сымитировал ситуацию - передал вам, как серверу, параметр :p22 и попросил определить его тип. Вы не смогли. А почему сервер должен? Исходя из чего? Меня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 11:05 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Можно ли отдать серверу sql: Код: sql 1.
и значение параметра S за один call, без prepare? Если можно, то может можно и Код: sql 1.
передать за один call, без prepare? И тогда тип поля становится известным. Ещё вопрос: как выполнить уже препарированный запрос: Код: sql 1.
со значением параметра большим чем длина поля? Если S равен 'AAAAA', то всё ok, а если 'AAAAAA', то: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 11:36 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdvМеня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"? Да просто люди работали с Оракулом или МС, которые даже не пытаются определить тип параметра и вообще не имеют такой функциональности в API. Hommerзначение параметра S за один call, без prepare? Можно, но внутри он всё равно сначала сделает Prepare запросу без значения пааметра, а потом уже Execute для значения параметра. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:35 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommer, 1. Можно 2. Можно но тогда ты должен сам указывать тип и размер параметра в приложении 3. Вроде то же можно. Но опять же придётся поработать Ты же используешь готовые компоненты у которых строгий алгоритм. prepare->получение типов параметров, которые возвращает сервер->заполнение параметров->execute Не получай типы параметров с сервера, заполняй всё сам, и будет тебе счастье, но это же думать надо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:36 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdvAlex TorinКогда вы мне объясните с чем отождествить ваше "даю тебе", тогда я и отвечу на ваш вопрос! Вы передаете запрос с параметром на сервер. Этот параметр ФБ не может ни с чем соотнести. Тип параметра определяется на этапе prepare. Я провел аналогию и сымитировал ситуацию - передал вам, как серверу, параметр :p22 и попросил определить его тип. Вы не смогли. А почему сервер должен? Исходя из чего? Меня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"? Я вас просто попросил точнее мысль свою сформулировать - это знаете ли иногда важно в ИТ, что бы вас правильно понять. А вы уже нарисовали картину маслом, что я что-то там не смог... Не стоит бежать впереди паровоза с выводами о человеке, когда сам корректно 2х слов связать не способен! Я многое не могу сделать как сервер (и вы тоже), даже питаюсь не от электросети - потому ваше сравнение меня с сервером мягко выражаясь для хайпа... Цирка нет - интересно почему его не интересует тип в предложении where, но интересует в select. Или для where он способен определить, а для select нет? Интересует чисто технически как задумано, что бы просто понять - без "ха-ха"... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:39 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinЯ многое не могу сделать как сервер А думать как программист Вы способны? То есть способны написать код, который определяет тип параметра и его размер по своему запросу? Alex Torinинтересно почему его не интересует тип в предложении where, но интересует в select. Или для where он способен определить, а для select нет? Иногда тип параметра невозможно определить и для where. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:45 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovkdvМеня интересует, что тут непонятного, и почему тут какая-то клоунада на эту тему, вроде "ха-ха, ФБ не может определить тип!"? Да просто люди работали с Оракулом или МС, которые даже не пытаются определить тип параметра и вообще не имеют такой функциональности в API. Дмитрий, ваша любовь к FB понятна и объяснима. И я тоже испытываю теплые чувства к FB ровно за то, что он позволяет и где применяется, а так же по многим другим критериям! Но зачем же такой плевок в сторону того же Oracle - как то по детски право... Да и вроде повода нет для подобных эмоций )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:46 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAlex TorinЯ многое не могу сделать как сервер А думать как программист Вы способны? То есть способны написать код, который определяет тип параметра и его размер по своему запросу? Alex Torinинтересно почему его не интересует тип в предложении where, но интересует в select. Или для where он способен определить, а для select нет? Иногда тип параметра невозможно определить и для where. Про какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно? Для Where иногда - это когда? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:50 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, а где плевок то? Другая реализация только и всего. Насколько я понял в ФБ тоже можно типы параметров подсовывать из приложения, но это не так просто ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 12:51 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов ДенисAlex Torin, а где плевок то? Другая реализация только и всего. Денис, тут многие с горяча тулят фразы на эмоциях (я не исключение) - тот, кому она была адресована, в контексте своих эмоций надеюсь ее понял )) Да другая реализация - я так и воспринимаю - без фанатизма... Симонов ДенисНасколько я понял в ФБ тоже можно типы параметров подсовывать из приложения, но это не так просто В том то и мой первоначальный вопрос был - подскажите, что я не так делаю или что не понимаю/ не знаю! А вот фраза "думать как программист", сказанная Дмитрием как раз излишне эмоциональна, потому как получается только FB нас дисциплинирует так думать, а остальные системы только плюшками балуют ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:03 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:07 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinподскажите, что я не так делаю или что не понимаю/ не знаю! Судя по всему, ты не знаешь ISC API и как с ним работать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:16 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinПро какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно?Для Where иногда - это когда?Как скомпилированная в исполняемый процессором машинный код клиентская библиотека fbclient.dll/fbclient.so должна определить тип параметра, который хотят передать в запрос? Процессоры, пока что, мысли горе-программистов читать не научились. Скажем, если в параметризованном запросе, в предложении WHERE, тип стоящего справа от оператора сравнения можно определить по типу поля, которое стоит слева от оператора сравнения, то в случае, когда исходя из подготовленного запроса тип параметра установить невозможно, разработчик БД должен задать тип параметра принудительно. Что тут может быть непонятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:26 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devAlex TorinПро какой именно код вы говорите - можете конкретизировать? Например определить на клиенте тип параметра и потом передать значение - этого достаточно?Для Where иногда - это когда?Как скомпилированная в исполняемый процессором машинный код клиентская библиотека fbclient.dll/fbclient.so должна определить тип параметра, который хотят передать в запрос? Процессоры, пока что, мысли горе-программистов читать не научились. Скажем, если в параметризованном запросе, в предложении WHERE, тип стоящего справа от оператора сравнения можно определить по типу поля, которое стоит слева от оператора сравнения, то в случае, когда исходя из подготовленного запроса тип параметра установить невозможно, разработчик БД должен задать тип параметра принудительно. Что тут может быть непонятно? НУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион! А теперь вопрос что из перечисленного вами не соотносится с тем, что я и так делаю? А да фраза "горе программист" - ну так какой есть - я на звезды не претендую. А вот смотрю здесь эмоциональные сопли все готовы разводить, а вдумываться в то, что оппонент пишет скилом таким явно обделены. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:35 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinа еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион! Во-первых, ты так и не показал эти "другие select". Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр. Alex TorinА теперь вопрос что из перечисленного вами не соотносится с тем, что я и так делаю? Тут проблема не в том, что ты делаешь, а, скорее в том, что ты не делаешь: ты не читаешь документацию на API используемого сервера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
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 и как с ним работать. Возможно - тогда я не достоин адекватной помощи в своем вопросе? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAlex Torinа еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион! Во-первых, ты так и не показал эти "другие select". Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр. Вот кусок побольше, но достаточный для понимания Код: sql 1. 2. 3. 4. 5. 6. 7.
Dimitry SibiryakovAlex TorinА теперь вопрос что из перечисленного вами не соотносится с тем, что я и так делаю? Тут проблема не в том, что ты делаешь, а, скорее в том, что ты не делаешь: ты не читаешь документацию на API используемого сервера. это да - согласен - в конкретном API я не силен! Потому и хотел спросить как правильно сделать... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:45 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinНУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион!После чего ты задаешь его принудительно в параметре на клиенте? После того, как Prepare запроса уже вывалил ошибку? Да сколько угодно! Всё равно, что пытаться впрыгнуть с перрона в вагон поезда, который уже ушёл. Если твои UNION SELECT с, якобы, корректно заданным параметром идут после SELECT с некорректно заданным параметром, сервер не обязан "глухим дважды служить обедню" и выполнять второй проход в алгоритме подготовки запроса. Не можешь корректно задать параметры - используй EXECUTE BLOCK с типизированными входящими параметрами! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:47 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinВот кусок побольше, но достаточный для понимания Ты таки не поверишь, но это не запрос Firebird. У Firebird нет именованных параметров. И именно поэтому, то, что ты считаешь "одним параметром" на основании его имени - на самом деле два разных параметра. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:48 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinПотому и хотел спросить как правильно сделать... В данном случае будет правильно использовать хранимую процедуру или execute block. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:50 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAlex TorinВот кусок побольше, но достаточный для понимания Ты таки не поверишь, но это не запрос Firebird. У Firebird нет именованных параметров. И именно поэтому, то, что ты считаешь "одним параметром" на основании его имени - на самом деле два разных параметра. Почему, вам верю! Но для меня это и вправду новость))) Dimitry SibiryakovAlex TorinПотому и хотел спросить как правильно сделать... В данном случае будет правильно использовать хранимую процедуру или execute block. Спасибо за совет! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:54 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinНо для меня это и вправду новость))) И вот тут-то мы и возвращаемся к вопросу нечтения документации на используемый продукт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:56 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinDimitry SibiryakovИногда тип параметра невозможно определить и для where. Для Where иногда - это когда? Код: sql 1. 2. 3.
Тут сервер может догадаться, что тип параметра Param1 такой же, как и тип поля Field1. Код: sql 1. 2. 3.
И тут может догадаться, что Param1 - это целое. Код: sql 1. 2. 3.
А вот тут получишь "Data type unknown". Код: sql 1. 2.
И тут, естественно, тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 13:58 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinDimitry Sibiryakovпропущено... Во-первых, ты так и не показал эти "другие select". Во-вторых, мой телепатер утверждает, что там присутствует совсем не этот параметр. Вот кусок побольше, но достаточный для понимания Код: sql 1. 2. 3. 4. 5. 6. 7.
Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:00 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devAlex TorinНУ например непонятно то, что я его задаю принудительно в параметре на клиенте, а еще то, что этот параметр присутствует и в предложении where других select, объединенных в юнион! После чего ты задаешь его принудительно в параметре на клиенте? После того, как Prepare запроса уже вывалил ошибку? Да сколько угодно! Всё равно, что пытаться впрыгнуть с перрона в вагон поезда, который уже ушёл. Нет - параметр нормально кушается, а ошибка происходит уже на стадии выполнения, отладка возвращает значения параметров, которые там присутствуют! Если вы мне объясните, как я на клиенте могу после вываливания ошибки задать параметр, то вы меня сильно удивите))) rdb_devЕсли твои UNION SELECT с, якобы, корректно заданным параметром идут после SELECT с некорректно заданным параметром, сервер не обязан "глухим дважды служить обедню" и выполнять второй проход в алгоритме подготовки запроса. Смотрим на код, который я выше написал Дмитрию, и рыдаем над вашим умозаключением ))) rdb_devНе можешь корректно задать параметры - используй EXECUTE BLOCK с типизированными входящими параметрами! Ну вот старался же человек, хотел и пять копеек по делу вставить, но не съязвить не смог... Ну вот когда же детство то в попе переиграет и желание задеть и детские обиды пройдут))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:08 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dmitry Kurbsky Код: sql 1. 2. 3.
А вот тут получишь "Data type unknown". Прикольно - это для меня тоже новость и тоже только для FB получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:13 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devAlex Torinпропущено... Вот кусок побольше, но достаточный для понимания Код: sql 1. 2. 3. 4. 5. 6. 7.
Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра. это понятно - спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:14 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinНет - параметр нормально кушается, а ошибка происходит уже на стадии выполнения, отладка возвращает значения параметров, которые там присутствуют! Если вы мне объясните, как я на клиенте могу после вываливания ошибки задать параметр, то вы меня сильно удивите)))Facepalm! Еще раз, для тех, кто в бронепоезде, объясняю, как это работает: 1. Высокоуровневая обёртка нативной клиентской библиотеки, получая команду на подготовку запроса, парсит запрос с именованными параметрами и определяет их очередность. В случае твоего запроса: Код: sql 1. 2. 3. 4. 5. 6. 7.
определит, что параметры с индексами 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 и прочих. Это понятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:27 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devAlex Torinпропущено... Вот кусок побольше, но достаточный для понимания Код: sql 1. 2. 3. 4. 5. 6. 7.
Большинству серверов СУБД и клиентских библиотек (включая ODBC) фиолетово, как у тебя называется параметр и где еще он использован. Замени все свои параметры знаками "?" и ты, возможно, догадаешься почему. Именами параметров оперируют лишь высокоуровневые клиентские обёртки, типа FIBPlus, а всё, что ниже, использует очередность задания всех параметров независимо от имени. Иными словами, если у тебя на верхнем уровне используется лишь один именованный параметр, встречающийся в запросе трижды, то на нижнем уровне это будет три безымянных параметра. Вы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:31 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры? Криво. Поэтому execute block в таких обёртках и не работает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:34 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры?А что им еще остается? Какие еще могут быть варианты, чтобы определить очередность параметров и передать нативной библиотеке запрос с "?" вместо именованных параметров? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:35 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКриво. Поэтому execute block в таких обёртках и не работает.В FIBPlus, вроде, работает. Просто парсит и меняет лишь входные параметры EXECUTE BLOCK, не трогая то, что внутри BEGIN...END. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:37 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_dev, это специальная обработка sql. А так, конечно, таким запросам, в том числе create procedure, у которых внутри параметры, надо ParamCheck:=False делать. Иначе компоненты с ума сходят, пытаясь найти параметры в тексте. Впрочем, всё это новость только для Alex Torin. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:53 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdvВпрочем, всё это новость только для Alex Torin.Не только! Еще и для Hommer. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 14:56 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdv, rdb_dev Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:03 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
kdv, прикинь, он думает - мы шутим. Alex Torinkdv, rdb_dev Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:06 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerВы хотите сказать что обёртки парсят sql перед отправкой в api? Так не может быть. Как тогда обёртки не знающие о execute block парсят его параметры? Криво. Поэтому execute block в таких обёртках и не работает. А при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди. Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке. Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:08 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devkdv, прикинь, он думает - мы шутим. Alex Torinkdv, rdb_dev Продолжайте, я попкорном запасся - пофантазируйте еще дуэтом - два брата акробата... ))) Вы ошибаетесь - я вообще думать не умею... Потому буду созерцать - продолжайте! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:09 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerА при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди. Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке. Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку.Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:15 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinВы ошибаетесь - я вообще думать не умею...Думать не умеешь, читать документацию не умеешь... Есть что-то, что ты умеешь, кроме как глупостями по клавиатуре стучать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:16 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devHommerА при ошибке, чтобы определить место, обёртка должна... капец. Так нельзя. Разработчики библиотек тоже люди. Нужно или с именованными параметрами научиться работать или дать функцию на клиенте чтобы любая обёртка могла её вызвать и получить список параметров и то что положено для сдвига при ошибке. Языков программирования много, обёрток много, их разработчиков много. Плохо заставлять каждого писать свою парсилку.Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут. Не нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:35 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devAlex TorinВы ошибаетесь - я вообще думать не умею...Думать не умеешь, читать документацию не умеешь... Есть что-то, что ты умеешь, кроме как глупостями по клавиатуре стучать? Это детская наивность, пубертатная глупость али старческий маразм? Вы с какой целью интересуетесь? Кстати rdb_devкроме как глупостями по клавиатуре стучать это ваш пик косноязычия или вы способны на большее? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommerrdb_devпропущено... Ты свои хотелки расскажи разработчикам компании Microsoft. Пусть для тебя спецификацию ODBC перепишут. Не нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо. А зачем при выходе новой версии firebird что-то переписывать? Старые парсилки со старыми конструкциями отлично работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:44 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerНе нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.Какая драма ! Что-то я не встречал и десятка "пострадавших" за всё время существования EXEC BLOCK. Это примерно лет за 14 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:45 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerНе нужно этого. Но многие десятки программистов, которым больше не нужно будет переписывать парсеры при выходе новой версии firebird, скажут спасибо.Конечно не нужно! Используй ISC API нативной библиотеки, а при передаче параметров используй ту очередность, в которой ты употребил эти параметры в запросе. В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:47 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinЭто детская наивность, пубертатная глупость али старческий маразм?Ты уж сам, как-нибудь, определись, что из перечисленного соответствует твоим перлам. Alex TorinВы с какой целью интересуетесь?С простой! Интересно - занафига ты пузыришь соплями на специализированном форуме разработчиков, когда в интернете огромное количество чатов и форумов блондинок тебе подстать? Не хочешь читать документацию и комментарии знающих людей - валяй блондинок развлекать! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 15:54 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_dev А вы с форума блондинок сюда пришли? Или вы чередуете? Откуда такая осведомленность ))) Мда - интернет реально придает людям крылья и нивелирует чувство самосохранения ))) Но ведь есть и несомненные плюсы - у таких как вы есть несомненный шанс пожить подольше... Послушайте, это ваш приватный форум? Нет? Тогда чем обоснована такая вонь с вашей стороны? Мнением, что вы гений? Процитирую одного киногероя "и что - у тебя кровь не бежит?" Попуститесь, гениальный вы наш! За сим откланиваюсь - лимит общения с гениями!))) Вопросы считайте риторическими и не утруждайтесь! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:18 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
rdb_devDimitry SibiryakovКриво. Поэтому execute block в таких обёртках и не работает.В FIBPlus, вроде, работает. Просто парсит и меняет лишь входные параметры EXECUTE BLOCK, не трогая то, что внутри BEGIN...END. У меня в древнем IBX тоже EXECUTE BLOCK нормально парсится. Ни разу проблем не было. Он при парсинге параметров (замене их на ?) не различает тип запроса. А проблемы, которые могут возникнуть в таком случае при Код: sql 1. 2. 3. 4. 5.
я обхожу просто - пишу Код: sql 1. 2. 3. 4. 5.
либо делаю процедуру. execute block вообще использую крайне редко, только при обновлении баз иногда (и в этих скриптах, конечно, параметров нет - ParamCheck=False стоит). Считаю, это не самая хорошая практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:37 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinя попкорном запасся Ты реально гонишь. Тебе объяснили, как всё работает. Тебе предложили, как сделать то, что ты хочешь (после prepare перед execute самому установить тип параметра, какой ты хочешь, если это надо). И что ты после этого еще ждешь под попкорн? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:43 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRock, Наверное, занавес. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:50 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockAlex Torinя попкорном запасся Ты реально гонишь. Тебе объяснили, как всё работает. Тебе предложили, как сделать то, что ты хочешь (после prepare перед execute самому установить тип параметра, какой ты хочешь, если это надо). И что ты после этого еще ждешь под попкорн? Так вроде я даже спасибо сказал! В чем гон? Или вы эмоционально неуравновешенный сарказм со стороны некоторого быдла отождествляете в одной куче с советами? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 16:59 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinИли вы эмоционально неуравновешенный сарказм со стороны некоторого быдла В таких вопросах необходимо с себя начинать Alex Torinотождествляете в одной куче с советами Это интернет. Не платный вуз. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:08 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinА вы с форума блондинок сюда пришли? Или вы чередуете? Откуда такая осведомленность )))Наивно полагаешь, что ты тут первая блондинка? Мне и тут за глаза общения с такими блондинками... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:23 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockAlex TorinИли вы эмоционально неуравновешенный сарказм со стороны некоторого быдла В таких вопросах необходимо с себя начинать Alex Torinотождествляете в одной куче с советами Это интернет. Не платный вуз. А то я не знаю... Только вот почему тогда гоню только я?))) Да и кроме как потролить их я больше не имею другой возможности с ними пообщаться на их уровне! Для меня к сожалению, для них к счастью )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:44 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, Я чего-то проспал разборку. А у Вас запрос без хранимки, без Execute Block? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:55 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
KreatorXXI, не. Код: sql 1.
тип параметра не определяет. Особой разборки то нет. Я не знаю чего они тут сцепились из-за фигни. Alex Torin, не знаю как ты проверял но exception появляется уже на этапе prepare, а не выполнения как ты утверждаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:57 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов Денис, А не правильней ситуацию отработать как в хранимке - типа "Неизвестная переменная". Хотя, что в лоб, что по лбу. Мне не понятен смысл такой конструкции. Зачем в селекте переменная, которая нигде не определена? Чисто ради спортивного интереса? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:29 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
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.
Обработка DECLARE там только благодаря тому, что в DECLARE могут быть курсоры. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
А если в V5 захочется создать короткий алиас для DECLARE, например VAR? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Или не захочется т.к. поломаются парсеры? :) Ещё. В аудите параметры естественно без имён: Код: sql 1.
Код: plaintext 1. 2. 3. 4. 5. 6.
Не удобно ведь. Мало того что библиотекам доступа нужно самим парсить sql и заменять имена на вопросики, но ещё и пользователи библиотек остаются без имён параметров в логе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:31 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
KreatorXXI, ты сначала топик почитай. Я же упростил его случай ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:31 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommer, я не понял на фига там в DECLARE лезть было, в 3.0 ещё DECLARE [PROCEDURE | FUNCTION]. Влад показывал обработку в EXECUTE STATEMENT и там всё было как-то проще ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:39 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerМало того что библиотекам доступа нужно самим парсить sql и заменять имена на вопросики, но ещё и пользователи библиотек остаются без имён параметров в логе. Так никто же не заставляет ни библиотеки, ни пользователей эти самые именованные параметры использовать. Я вот в своих запросах использую неименованные параметры и никакого дискомфорта не чувствую. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerТ.е. пострадавшие были.Кавычки куда дел ? Были те, кто делает реальную работу, а не ноет по любому поводу. Парсеры в компронентах\оболочках были всегда - ибо именованных пар-ров в движке нет. Соотв. чуть допилить парсер, чтобы понимал EXECUTE BLOCK и не лез за его заголовок - вообще не проблема. Кто сам не осилил - спрашивал, да. Таких не много было. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:43 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов Денися не понял на фига там в DECLARE лезть былоЯ тоже. Конкретно для EXEC BLOCK можно останавливать парсинг сразу после AS (можно и раньше, но это чуть сложнее). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:47 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
KreatorXXIAlex Torin, Я чего-то проспал разборку. А у Вас запрос без хранимки, без Execute Block? Да. без того и без того. И собственно сделать через них это понятно что можно. Собственно Дмитрий еще в начале об этом и подсказывал... А "разборка" к делу не относится)) Не обращайте внимания! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:00 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, я не понял на фига там в DECLARE лезть было, в 3.0 ещё DECLARE [PROCEDURE | FUNCTION]. Влад показывал обработку в EXECUTE STATEMENT и там всё было как-то проще Не нафига, а зачем :) Под спойлером просто пример как разработчик UIB решал вопрос с преобразованием sql с именами параметров в sql с вопросиками. decare cursor когда появился? А что ещё появится? И парсер переделывать чтоли? Нет конечно. Нужно научиться самим работать с именами параметров. Это хорошее решение. Появляются новые языки, появляются новые программисты, кто-то пишет либы, кто-то ими пользуется. С вопросиками просто не удобно. Их конечно нужно оставить, но и нормальный вариант реализовать тоже. Представьте если бы в Delphi не было именованных параметров, а были бы только вопросики. Было бы скучно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:12 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torinпочему тогда гоню только я?))) Эта галлюцинация тебе привиделась - никто не утверждал, что только ты. Как и другие глюки. Вот я и говорю, что гонишь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:16 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerС вопросиками просто не удобно. Что именно с ними неудобно делать? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:23 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов ДенисAlex Torin, не знаю как ты проверял но exception появляется уже на этапе prepare, а не выполнения как ты утверждаешь Я не совсем это утверждал - потому как отвечал в контексте заданного мне вопроса! Согласен что не совсем корректно сформулировал, но оппонент от меня этого и не требовал)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:27 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockAlex Torinпочему тогда гоню только я?))) Эта галлюцинация тебе привиделась - никто не утверждал, что только ты. Как и другие глюки. Вот я и говорю, что гонишь :) Ээээ... YuRockТы реально гонишь. ... И что ты после этого еще ждешь под попкорн? А это не значило что только я? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:30 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex Torin, короче смирись и прими как есть. CAST к нужному типу все юзают и не жжужат ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:37 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЧто именно с ними неудобно делать? Не то, что неудобно. Просто кажется нелогичным один и тот же параметр сознавать одинаковым по несколько раз. Память под структуру, память под значения (одни и те же) параметра выделять и заполнять. Несколько раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:38 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Alex TorinYuRockТы реально гонишь. ... И что ты после этого еще ждешь под попкорн? А это не значило что только я? )) Даже боюсь предположить, как к такому выводу можно было прийти. Конечно же не означало. Я, например, тоже гоню, раз с тобой такой обмен бессмысленными сообщениями произвёл :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
hvladСимонов Денися не понял на фига там в DECLARE лезть былоЯ тоже. Конкретно для EXEC BLOCK можно останавливать парсинг сразу после AS (можно и раньше, но это чуть сложнее). А если вы добавите новую конструкцию? Как человеку написать преобразователь имён параметров в вопросики один раз и на всё время? Мониторить изменения в языке - очень плохой вариант. Вам ведь не комфортно находиться в ситуации, когда ваши изменения в языке могут поломать кучу библиотек доступа? Ломать не захочется и придётся подстраивать язык под реалии. Пока существует эта зависимость, чем-то придётся пожертвовать когда придёт время, или библиотеками или языком. Поэтому зависимость лучше убрать. А ещё лучше добавить работу с именованными параметрами, ведь это во всех либах нужно. И аудит будет дружелюбней. Одни плюсы :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 19:51 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommer, ну тыж умный. Вон Job в FB добавляешь, вот и займись. Хорошо напишешь глядишь и коммит твой примут и API расширят ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 20:02 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerА если вы добавите новую конструкцию?Ты серьёзно считаешь, что после EXEC BLOCK не было добавлено ни одной новой конструкции ? Давай ты сначала поймёшь - что именно нужно "парсить", как именно и в каком объёме, а уже потом будешь рассказывать про страшшшные несовместимости. Пример с парсингом DECLARE показывает только уровень некомпетентности того, кто это писал. Ты пока что в той же обойме. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 20:14 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
YuRockAlex Torinпропущено... А это не значило что только я? )) Даже боюсь предположить, как к такому выводу можно было прийти. Конечно же не означало. Я, например, тоже гоню, раз с тобой такой обмен бессмысленными сообщениями произвёл :) Я говорил в контексте данной темы, а не вообще! Потому как второе понятно без слов ))) Ладно - проехали.. не суть важно собственно!)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 20:18 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerКак человеку написать преобразователь имён параметров в вопросики один раз и на всё время? Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу преобразователя сэкономится. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 20:20 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
hvladHommerА если вы добавите новую конструкцию?Ты серьёзно считаешь, что после EXEC BLOCK не было добавлено ни одной новой конструкции ? Давай ты сначала поймёшь - что именно нужно "парсить", как именно и в каком объёме, а уже потом будешь рассказывать про страшшшные несовместимости. Вот сделаете вы в V5 например такую конструкцию (входные параметры: SYSTEM_FLAG и P1): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
или такую (параметр P и P2): Код: sql 1. 2. 3. 4. 5. 6.
а все существующие библиотеки не смогут их обрабатывать. Потому что не смогут понять какие параметры нужно преобразовывать в ?, а какие нет. Возможно в V5 вы не захотите чтобы параметр SYSTEM_FLAG из первого примера был виден внутри EXECUTE BLOCK, а возможно захотите. Под каждый вариант свой парсер. И сейчас его не написать, придётся дождаться вашего решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:03 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommer, не надо фантазировать всякую чушь. Такое точно делать не будут ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:07 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Hommer, продолжай прикидываться, у тебя получается. Пока опять ник менять не придётся ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:11 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerКак человеку написать преобразователь имён параметров в вопросики один раз и на всё время? Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу преобразователя сэкономится. А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :) Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:20 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов ДенисKreatorXXI, ты сначала топик почитай. Я же упростил его случай Конечно, весь топик прочитал (уже было три страницы почти). Но так и не понял ради чего копья ломаются? В запросе ТС с юнионом накой неопределённая переменная? Чисто теоретическая возня? FB должен ноль подставлять на автомате? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:23 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
hvladHommer, продолжай прикидываться, у тебя получается. Пока опять ник менять не придётся Не понял. Что я сказал такого? Мы вроде про технические вещи говорим. Я по крайней мере. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:26 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerА если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :) Написать запрос сразу без лишних параметров - никак не получается?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:27 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
KreatorXXIСимонов ДенисKreatorXXI, ты сначала топик почитай. Я же упростил его случай Конечно, весь топик прочитал (уже было три страницы почти). Но так и не понял ради чего копья ломаются? В запросе ТС с юнионом накой неопределённая переменная? Чисто теоретическая возня? FB должен ноль подставлять на автомате? С юнионом это часть конкретного рабочего запроса - что именно вам не понятно? логика запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:40 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerА если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :) Написать запрос сразу без лишних параметров - никак не получается?.. Он был написан без лишних параметров, но "условия изменились" или "код переиспользовался в другом месте" или "стало нужно написать if для некоторых условий". Всё меняется, переиспользуется, становится гибче. С индексным доступом действительно нужно писать сразу правильно и не давать окружающему миру меняться настолько чтобы пришлось рефакторить :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:41 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
KreatorXXI, в принципе FB мог бы просто сказать что есть некий параметр с неопределённым типом в момент prepare, а не кидать ошибку. Тогда можно было бы на клиенте самостоятельно подготовить входное сообщение и буфер и выполнять запрос уже с ними. Но тут я могу ошибаться, непосредственно с API часто не работаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:42 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Симонов Денисв принципе FB мог бы Теоретически это возможно, но перепахивать пласты кода тридцатилетней выдержки тупо некому. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 22:03 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
HommerDimitry Sibiryakovпропущено... Вот поэтому и следует сразу использовать вопросики. Заодно время на написание и работу преобразователя сэкономится. А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :) Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам. Я давно вынашиваю идею. Чтобы можно было написать "селект кое-что из кое-чего". А потом бросать её серверу в любой момент времени и в любом месте приложения или ХП, а он пусть поймёт что мне надо. Это столько сэкономит трудозатрат... мнеее... а! программистов! что будет просто научно-техническая революция. В мировом масштабе. Но ведь не поймут-с, Азия-с... (С) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 23:29 |
|
Параметры в предложении SELECT
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаHommerпропущено... А если в where 15 параметров и условия с третим, пятым и одиннадцатым нужно закомментировать, то нужно просто в десяти местах подправить индексы у параметров и не ошибиться :) Это примерно как сделать select 15-ти полей и получать их значения по индексам, а потом убрать парочку полей из селекта и в результате иметь счастье править индексы. А потом добавить пару полей в начало select-a, и опять получить удовольствие от правки индексов. Это очень сковывает. Есть ощущение что вы пишете только системный софт и уже давно. Это судя по тому что вас не смущают вопросики и индексный доступ к параметрам. Я давно вынашиваю идею. Чтобы можно было написать "селект кое-что из кое-чего". А потом бросать её серверу в любой момент времени и в любом месте приложения или ХП, а он пусть поймёт что мне надо. Это столько сэкономит трудозатрат... мнеее... а! программистов! что будет просто научно-техническая революция. В мировом масштабе. Но ведь не поймут-с, Азия-с... (С)Ты опоздал. Твою идею уже давно реализовали: http://button.dekel.ru/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 01:37 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561190]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
110ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 228ms |
0 / 0 |