powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как написать UDF?
8 сообщений из 8, страница 1 из 1
Как написать UDF?
    #32003086
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Есть 3 таблицы, одна из которых, соединяя 2 крайние, реализует связь М:М.
Authors(auth_id, name); bk2auth(auth_id, bk_id); books(bk_id....).
Как мне написать UDF, к-рая возвращала бы мне имя автора книги, а если их несколько, - то все ч/з запятую?

Премного благодарен
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003087
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
Подобная задача обычно решается с помощью цикла по курсору. Следует только учесть, что использовать в теле UDF глобальные курсоры запрещено. Правда, можно использовать локальные.
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003090
codd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень просто:

CREATE FUNCTION bk2auth (@bk varchar(x))
RETURNS TABLE
AS
select auth_name from Authors A, BK2AUTH C where A.au_id=C.au_id and C.bk_id in (select bk_id from BOOKS where bk_name=@bk)

А вот через запятую можно ADO используя, вывести
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003100
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажи "Нет!" курсорам и циклам!
Минимум работы в клиентской части!
Ребята(Garya и codd), ну что ж вы ерунду советуете?

create function ff(@n varchar(50))
returns varchar(500)
as
begin
declare @s varchar(500)
set @s=''
select @s=@s+name+',' from sysobjects where name like @n
if @s<>'' set @s=substring(@s,1,datalength(@s)-1)
return @s
end
go
create table #t(c varchar(20))

insert #t select 'syso%'
insert #t select 'sysc%'
insert #t select 'sysp%'
go
select c, dbo.ff(c) from #t

Пойдет так?
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003156
Николай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2codd: этот способ можно было бы рассматривать как альтернативу, но в случае, если мне эта UDF нужна была для работы клиентского приложения. Но мне необходимо было использовать ее в самих запросах. А я не сформулировал это как надо в вопросе.
2Garya: Я тоже склонялся к такому варианту, пока не прочитал вариант SergSuper.
2SergSuper: Ну что же я могу сказать? У меня просто нет слов. Воистину: некоторые вещи необходимо просто знать.

Всем огромное спасибо!
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003233
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Garya Привилегированный пользователь
Участник
2SergSuper. Что я могу сказать? Мне понравилось . Похожее решение было в рассылке Александра Гладченко по Update (через два знака равенства). Чесслово, очень симпатично.
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003305
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и спасибо, SergSuper. Эдак походя прочитал, и модифицировал за 2 часа 8 процедур, избавившись от курсоров. Причем код упростился до уровня понимания его разработчиком.
...
Рейтинг: 0 / 0
Как написать UDF?
    #32003306
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и спасибо, SergSuper. Эдак походя прочитал, и модифицировал за 2 часа 8 процедур, избавившись от курсоров. Причем код упростился до уровня понимания его разработчиком.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как написать UDF?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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