Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли в условии запроса использовать хранимую процедуру


Sour ©   (2005-02-17 09:18:00) 

Хочу выполнить такой запрос:
select * from table1 where field1 = GetSomeThing()

Использую (Interbase 7.0 и FireBird 1.5)


Sour   (2005-02-17 10:35:00) [1]

>Sergey13
Входных парметров нет


msguns   (2005-02-17 10:31:00) [2]

>Sour   (17.02.05 10:22) [6]

ИМХО, так нельзя. А вот написать ХП, содержащую этот запрос, вызывающую GetSomeThing и использующую возвращаемое ею значение как значене переменной в выражении like, можно.
С клиента, есно, выполнять новую процедуру


Johnmen   (2005-02-17 10:30:00) [3]

SELECT YourSingleOutParam FROM GetSomeThing()
И учи матчасть перед задаванием вопросов.


Sergey13   (2005-02-17 10:29:00) [4]

2[7] Sour   (17.02.05 10:25)
А входные параметры есть?


Sour   (2005-02-17 10:25:00) [5]

Заведомо известно, что GetSomeThing() возвращет только одно значение, а не набор


Sour   (2005-02-17 10:22:00) [6]

а если мне необходим такой запрос:
select * from table1 where filed2 like '%,' || GetSomeThing() || ',%' ??


msguns   (2005-02-17 10:11:00) [7]

select * from table1
where field1 in
 (Select <имя_поля_ХП> GetSomeThing(<список параметров>))


Sour   (2005-02-17 09:56:00) [8]

Че то я совсем гоню.

Выполняю запрос:
select * from table1 where field2 = GetSomeThing()

Возникает ошибка:
"An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
GetSomeThing."

Так как, блин, правильно написать этот запрос?


Johnmen   (2005-02-17 09:42:00) [9]

Таким значком : обозначаются параметры в параметрическом запросе.
О чем тебе и было сообщено...


Sour   (2005-02-17 09:38:00) [10]

Sorry за бредовый вопрос.

Дело в том что Firbird ругался на известное имя функции.

Совсем из головы выпало, сделал так:
select * from table1 where field1 = :GetSomeThing,
где GetSomeThing() - хранимая процедура, возвращающая единственное значение.

Но теперь столкнулся еще с одной проблемой. Надо результат функции преобразовать к строке. Переписал запрос так:

select * from table1 where field2 = cast(:GetSomeThing as varchar(50))

Теперь ругается:
"An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Data type unknown."

Хотя GetSomeThing возвращает integer.
Использую (Interbase 7.0 и FireBird 1.5)


Johnmen   (2005-02-17 09:20:00) [11]

>Хочу выполнить

Хочешь - выполни. Будут вопросы - приходи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо