Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 УПС !!!!  [new]
dr.FausT
Member

Откуда: Тюмень
Сообщений: 80
Неверно указал :)


declare @SQLStr varchar(5000)
declare @params varchar(5000)

set @params = (dbo.GetParam_new(@id,',') )
set @SQLStr = 'select '+char(39)+cast(@id as varchar(50))+char(39)+' as id,'+'cast ('+char(39)+@name+char(39)+'as varchar(5000) ) as name, '+@params exec (@SqlStr)





ALTER FUNCTION dbo.GetParam_new(@OwnerId uniqueidentifier,@separator varchar(1))
RETURNS NVARCHAR(2000)
AS
BEGIN
DECLARE @Result NVARCHAR(4000)
SET @Result = ''
SELECT @Result = @Result + ' cast('+
+char(39)+cast ( da.Value as varchar(4000))+char(39)+' as varchar(1000) ) as '+char(39)+
cast ( dd.id as varchar(4000))+char(39)+ ','
FROM dataAttrs da
join dataAttrDefn dd on (da.attrId = dd.id)
WHERE da.ownerID = @OwnerId
--%af_src_str_4

group by dd.name,dd.id,da.Value order by dd.name
if len(@Result)>0
set @Result = substring (@Result,1,len(@Result)-1)
RETURN RTRIM(@Result)
END


результат выполнения функции может быть таким :
cast('465' as varchar(1000) ) as 'D5506407-7974-42E4-9152-9DB67EF100BF', cast('G7' as varchar(1000) ) as '548526E9-DA43-4289-BD1C-8787F0879A69'
или таким :
cast('#' as varchar(1000) ) as '86840A1D-D1A3-4EB1-A19A-2393F9027AB6', cast('Сталь09Г2С' as varchar(1000) ) as 'AAA9C496-D230-4CD2-B33B-0F15A6801DD8', cast('40' as varchar(1000) ) as '9BC731A7-3784-4E78-B7B0-F1560366D347'
имена полей должны быть uniqueidentifier.

И я заранее не знаю какие поля будут в резалте и сколько их будет, поэтому заранее создать временную таблицу не могу ...
18 ноя 03, 15:35    [422979]     Ответить | Цитировать Сообщить модератору
 Re: УПС !!!!  [new]
TDriims
Member

Откуда: Наб. Челны
Сообщений: 6
Чо то я туплю, но ничего не пойму...к чему все это?
18 ноя 03, 16:21    [423079]     Ответить | Цитировать Сообщить модератору
 Re: УПС !!!!  [new]
dr.FausT
Member

Откуда: Тюмень
Сообщений: 80
Есть табличка
DataFolders (id, name,ownerId, lft, rgt) - в ней лежит информация о дереве.
Есть вторая табличка
dataAttrDefn (id, AttrName, AttdDataType) - в ней лежит описание атрибутов.
и есть третья табличка
dataAttrs (id, attrId, ownerId, Value ) - в ней лежат значения атрибутов элемента дерева.

А всё вышеперечисленное нужно для собирания всех параметров одного элемента в строку.
19 ноя 03, 06:32    [423600]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить