Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как написать простую функцию в Query Analyser?  [new]
wh
Member

Откуда: Kiev
Сообщений: 85
Люди, очень нужна помощь.
Есть таблица:
telephone с такими полями:
+----+------+
| ID |phone |
+----+------+
| 1 |111111|
| 2 |222222|
| 1 |333333|
| 3 |444444|
| .. .| .. .. |
+----+------+

Как с помощью SQL Query Analyser можно создать функцию, которая бы возвращала с таблицы для определенного ID значения phone и присваивала их строковой переменной, разделяя значения запятой.
Например, для ID=1 :
str = '111111, 333333'
22 мар 05, 16:38    [1406108]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
https://www.sql.ru/faq/faq_topic.aspx?fid=130
22 мар 05, 16:40    [1406126]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
wh
Member

Откуда: Kiev
Сообщений: 85
Спасибо БОЛЬШОЕ за помощь.
Я написал следующую функцию:

use tempdb

GO
CREATE FUNCTION dbo.GetDescription(@id INTEGER)
RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @Result NVARCHAR(4000)
SET @Result = ''
SELECT @Result = @Result + CAST([Id] AS NVARCHAR(10)) + [Phone] + ' ' FROM dbo.TEST2 WHERE [Id] = @id
RETURN '"' + RTRIM(@Result) + '"'
END
GO

SELECT DISTINCT [Id], dbo.GetDescription([Id]) FROM dbo.TEST2
GO


Но оно ругается на строку
RETURN '"' + RTRIM(@Result) + '"'

Пишет:
There is already an object named 'GetDescription' in the database.
22 мар 05, 17:43    [1406363]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
автор
There is already an object named 'GetDescription' in the database.

Ну так Вы его второй раз создать пытаетесь. Если создали - alter function вместо create
22 мар 05, 17:45    [1406372]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
wh
Member

Откуда: Kiev
Сообщений: 85
Виноват) А как можно проверить, последняя ли это запись, потому что мне нужно телефоны разделять запятыми, но после последнего ее не должно быть:

"12-12-12, 124-23-23, 345-34-34"

Не могли бы Вы подсказать, как это лучше всего сделать?
22 мар 05, 17:56    [1406420]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
wh

Виноват) А как можно проверить, последняя ли это запись, потому что мне нужно телефоны разделять запятыми, но после последнего ее не должно быть:

"12-12-12, 124-23-23, 345-34-34"

Не могли бы Вы подсказать, как это лучше всего сделать?

set @Result=left(@Result,len(@Result)-1)
22 мар 05, 17:58    [1406434]     Ответить | Цитировать Сообщить модератору
 Re: Как написать простую функцию в Query Analyser?  [new]
wh
Member

Откуда: Kiev
Сообщений: 85
СПАСИБО, ребята, вы мне очень помогли!
22 мар 05, 18:09    [1406471]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить