powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Параметры в предложении SELECT
25 сообщений из 110, страница 1 из 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
25 сообщений из 110, страница 1 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Параметры в предложении SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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