Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Напомните, пожулайста, как в IB7 создать хранимую функцию   Найти похожие ветки 

 
novill ©   (2007-02-14 16:21) [0]

Именно функцию а не хранибую процедуру!

Чтобы можно было сделать select myfunc(field1) from table1

То есть чтобы ее можно было вызывать так же, как UDF.


 
Johnmen ©   (2007-02-14 16:24) [1]

Нет там хранимых процедур. Ты еще ibase.ru не читал?


 
Val ©   (2007-02-14 16:26) [2]

серьезно? можно линк?


 
Val ©   (2007-02-14 16:27) [3]

или имеется ввиду не изменение синтаксиса, а то что хп в иб по сути - функция?


 
Сергей М. ©   (2007-02-14 16:30) [4]


> Именно функцию а не .. процедуру



> Чтобы можно было сделать select myfunc(field1)


Ты на голову не жаловался сегодня ?

А в самую пору)


 
Desdechado ©   (2007-02-14 16:43) [5]

В IB7 не знаю, а в более ранних версиях такое невозможно.
Т.к. если процедура возвращает набор данных, то ее можноиспользовать вместо таблицы. Если она не возвращает набор данных, то только через EXECUTE PROCEDURE.


 
novill ©   (2007-02-14 16:48) [6]

Я знаю, что у хранимых процедур есть возвращаемые значения.

Нужно другое - чтобы ее можно было вызвать в запросе, как, например, функцию LTRIM

select LTRIM(field1) from table1

> [4] Сергей М. ©   (14.02.07 16:30)
А вы что-то полезное в этом мире делаете?


 
Desdechado ©   (2007-02-14 16:50) [7]

> функцию LTRIM
Это UDF


 
novill ©   (2007-02-14 16:54) [8]

> [7] Desdechado ©   (14.02.07 16:50)
> > функцию LTRIM
> Это UDF


Это я знаю :) но мне не нужна UDF, мне хватает того, что можно сделать в ХП.


 
Сергей М. ©   (2007-02-14 16:55) [9]


> вы что-то полезное в этом мире делаете?


Конечно делаю.

Гажу, к примеру. Преимущественно - большими зловонными кучами. Ибо дерьмо, как известно, не только вредно, но и полезно)

Особенно люблю гадить, отправляя подальше всяк и каждого при каждом удобном случае (к документации на IB ISQL/PSQL) и поближе (к той же самой док-ции, но с косвенной ссылкой на ibase.ru).


 
novill ©   (2007-02-14 17:00) [10]

> [9] Сергей М. ©   (14.02.07 16:55)
То, что вы гадите, я заметил. А вот где хоть одна вразумительная ссылка на документацию в вашем посте?

> [4] Сергей М. ©   (14.02.07 16:30)
>
> Ты на голову не жаловался сегодня ?
>
> А в самую пору)


 
Desdechado ©   (2007-02-14 17:15) [11]

А чем не нравится вызов EXECUTE PROCEDURE ?


 
Johnmen ©   (2007-02-14 17:21) [12]


> Johnmen ©   (14.02.07 16:24) [1]
> Нет там хранимых процедур. Ты еще ibase.ru не читал?

...функций...
конечно же.


 
Val ©   (2007-02-14 17:24) [13]

эх :)


 
ЮЮ ©   (2007-02-15 08:49) [14]


> select myfunc(field1) from table1


Предполагает набор данных, количество строк которого равно количеству записей в таблице table1, а значение поля вычислено по значению field1 в ХП myfunc.

Почему бы тогда myfunc самой не возвращать нужный НД?


 
novill ©   (2007-02-15 09:27) [15]

> [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 09:48) [16]


> А во что он превратиться если бы пришлось функцию ltim вызывать
> как ХП?


В ХП ltrimedtable2, которая возвращала бы таблицу table2 с ltrim-нутым полем field2.

select ltim(field1) from table1
inner join ltrimedtable2  on table1.field2 = ltrimedtable2.field2 and table1.field3=ltrimedtable2.field3
where...

З.Ы. странно наблюдать ведущие пробелы в текстовых полях.


 
Desdechado ©   (2007-02-15 11:37) [17]

> странно наблюдать ведущие пробелы в текстовых полях.
Еще более странно пытаться строить по ним соединения как по ключевым.


 
novill ©   (2007-02-15 11:54) [18]

и Ltrim и запрос взяты для для примера.


 
ЮЮ ©   (2007-02-15 12:12) [19]


> и Ltrim и запрос взяты для для примера.


в [16] Ltrim упоминается только в названии функции и тоже как пример, что ХП может расширить поля существующей таблицы "вычислимыми" полями, вычисленными внутри этой ХП. Твой пример не показал необходимость вычисления функции от скаляра.

З.Ы. Связывание таблиц по вычислимому полю наверняка приведет к полному сканированию таблицы. Лучше уж использлвать LEFT связь, имея вычислимое поле слева, а реальное поле - справа



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1176904042
Halz
2007-04-18 17:47
2007.05.06
Простенькая задача


1-1173692656
Krants
2007-03-12 12:44
2007.05.06
Сортировка в ShellListView


15-1175712277
Real
2007-04-04 22:44
2007.05.06
Bug TCP/IP


15-1175938959
ЭРИКА
2007-04-07 13:42
2007.05.06
ПОЗДРАВЛЕНИЕ


2-1176931164
ppcumax
2007-04-19 01:19
2007.05.06
Помогите разобраться с чекбоксом