![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Напомните, пожулайста, как в IB7 создать хранимую функцию
novill © (2007-02-14 16:21:00)Именно функцию а не хранибую процедуру!
Чтобы можно было сделатьselect myfunc(field1) from table1
То есть чтобы ее можно было вызывать так же, как UDF.
ЮЮ (2007-02-15 12:12:00) [1]
> и Ltrim и запрос взяты для для примера.
в [16] Ltrim упоминается только в названии функции и тоже как пример, что ХП может расширить поля существующей таблицы "вычислимыми" полями, вычисленными внутри этой ХП. Твой пример не показал необходимость вычисления функции от скаляра.
З.Ы. Связывание таблиц по вычислимому полю наверняка приведет к полному сканированию таблицы. Лучше уж использлвать LEFT связь, имея вычислимое поле слева, а реальное поле - справа
novill (2007-02-15 11:54:00) [2]и Ltrim и запрос взяты для для примера.
Desdechado (2007-02-15 11:37:00) [3]> странно наблюдать ведущие пробелы в текстовых полях.
Еще более странно пытаться строить по ним соединения как по ключевым.
ЮЮ (2007-02-15 09:48:00) [4]
> А во что он превратиться если бы пришлось функцию ltim вызывать
> как ХП?
В ХП ltrimedtable2, которая возвращала бы таблицу table2 с ltrim-нутым полем field2.
select ltim(field1) from table1
inner join ltrimedtable2 on table1.field2 = ltrimedtable2.field2 and table1.field3=ltrimedtable2.field3
where...
З.Ы. странно наблюдать ведущие пробелы в текстовых полях.
novill (2007-02-15 09:27:00) [5]> [14] ЮЮ © (15.02.07 08:49)
Все было хорошо, но использовать стандарный вызов ХП в сложных запросах неудобно.
Например, следующий запрос прост для понимания
select ltim(field1) from table1
inner join table2 on table1.field2= ltrim(table2.field2) and table1.field3=table2.field3
where...
А во что он превратиться если бы пришлось функцию ltim вызывать как ХП?
Ладно, тема закрыта. Я уже удф написал.
ЮЮ (2007-02-15 08:49:00) [6]
> select myfunc(field1) from table1
Предполагает набор данных, количество строк которого равно количеству записей в таблице table1, а значение поля вычислено по значению field1 в ХП myfunc.
Почему бы тогда myfunc самой не возвращать нужный НД?
Val (2007-02-14 17:24:00) [7]эх :)
Johnmen (2007-02-14 17:21:00) [8]
> Johnmen © (14.02.07 16:24) [1]
> Нет там хранимых процедур. Ты еще ibase.ru не читал?
...функций...
конечно же.
Desdechado (2007-02-14 17:15:00) [9]А чем не нравится вызов EXECUTE PROCEDURE ?
novill (2007-02-14 17:00:00) [10]> [9] Сергей М. © (14.02.07 16:55)
То, что вы гадите, я заметил. А вот где хоть одна вразумительная ссылка на документацию в вашем посте?
> [4] Сергей М. © (14.02.07 16:30)
>
> Ты на голову не жаловался сегодня ?
>
> А в самую пору)
Сергей М. (2007-02-14 16:55:00) [11]
> вы что-то полезное в этом мире делаете?
Конечно делаю.
Гажу, к примеру. Преимущественно - большими зловонными кучами. Ибо дерьмо, как известно, не только вредно, но и полезно)
Особенно люблю гадить, отправляя подальше всяк и каждого при каждом удобном случае (к документации на IB ISQL/PSQL) и поближе (к той же самой док-ции, но с косвенной ссылкой на ibase.ru).
novill (2007-02-14 16:54:00) [12]> [7] Desdechado © (14.02.07 16:50)
> > функцию LTRIM
> Это UDF
Это я знаю :) но мне не нужна UDF, мне хватает того, что можно сделать в ХП.
Desdechado (2007-02-14 16:50:00) [13]> функцию LTRIM
Это UDF
novill (2007-02-14 16:48:00) [14]Я знаю, что у хранимых процедур есть возвращаемые значения.
Нужно другое - чтобы ее можно было вызвать в запросе, как, например, функцию LTRIM
select LTRIM(field1) from table1
> [4] Сергей М. © (14.02.07 16:30)
А вы что-то полезное в этом мире делаете?
Desdechado (2007-02-14 16:43:00) [15]В IB7 не знаю, а в более ранних версиях такое невозможно.
Т.к. если процедура возвращает набор данных, то ее можноиспользовать вместо таблицы. Если она не возвращает набор данных, то только через EXECUTE PROCEDURE.
Сергей М. (2007-02-14 16:30:00) [16]
> Именно функцию а не .. процедуру
> Чтобы можно было сделать select myfunc(field1)
Ты на голову не жаловался сегодня ?
А в самую пору)
Val (2007-02-14 16:27:00) [17]или имеется ввиду не изменение синтаксиса, а то что хп в иб по сути - функция?
Val (2007-02-14 16:26:00) [18]серьезно? можно линк?
Johnmen (2007-02-14 16:24:00) [19]Нет там хранимых процедур. Ты еще ibase.ru не читал?