Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CLR table valued Function with returned variable column quantity  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
Пытаюсь нарисовать табличную CLR функцию с заранее неизвестным набором столбцов.
(набор зависит от передаваемого sql запроса)

Возвращаю DataTable.Rows, может, это и не прокатит, но пока спотыкаюсь на отсуствие определения таблицы в атрибуте.
(... is marked as a table-valued function and must define a table definition in the SqlFunction attribute.)
Понятно, что в моем случае такого определения быть не может.

IsDeterministic = false, IsPrecise = false
не помогло.


Нет ли другого способа написания CLR функций или как это побороть?

Thanxx!
21 дек 11, 15:32    [11803896]     Ответить | Цитировать Сообщить модератору
 Re: CLR table valued Function with returned variable column quantity  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
как это побороть?


Забить на корню на идею "одной функции" на все случаи жизни. Что за задачу Вы пытаетесь решить таким способом?
21 дек 11, 18:05    [11805302]     Ответить | Цитировать Сообщить модератору
 Re: CLR table valued Function with returned variable column quantity  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
pkarklin,

ну, общая задача - чтобы функции оперировали с таблицей из схемы равной дефолтной схеме текущего пользователя.

Например
create function Fun() returns table as
select * from Table1

ожидается что пользователь с дефолтной схемой schema1 получит содержимое таблицы schema1.Table1, а со схемой schema2 - таблицы schema2.Table1

Но это невозможно, потому что правильный синтаксис
create function dbo.Fun() returns table as
select * from Table1

и оба получат обращение к dbo.Table1.
Проверено.
21 дек 11, 18:50    [11805486]     Ответить | Цитировать Сообщить модератору
 Re: CLR table valued Function with returned variable column quantity  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Жмурик,

А зачем каждому пользователю по таблице в "своей схеме"? Что за городушки городим???
21 дек 11, 20:45    [11805831]     Ответить | Цитировать Сообщить модератору
 Re: CLR table valued Function with returned variable column quantity  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
pkarklin
Жмурик,
А зачем каждому пользователю по таблице в "своей схеме"? Что за городушки городим???
У каждой схемы куча таблиц, причем одинаковых.
И количество схем, а значит и таблиц растет
И каждый пользователь должен работать с таблицами своей схемы.
Вот такие городушки уже нагорождены, проблема в миграции на SQL Server.

Кстати, проблема решена.

Приемлемый ответ такой: Табличные функции могут вызываться без указания схемы и по умолчанию обращаются к таблицам из дефолтной схемы пользователя. А скалярные функции и их вызовы лекго переделываются в табличные и в общем случае вызываются (select val from func()).

Спасибо всем откликнувшимся.
22 дек 11, 20:21    [11811732]     Ответить | Цитировать Сообщить модератору
 Re: CLR table valued Function with returned variable column quantity  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
Немного ошибся.

Табличный функции действительно можно вызвать без указания схемы. При этом вызовется функция с текущей схемой (она же - дефолтная схема порльзолвателя), которая уже обращается к нужным таблицам.
То есть функции тоже дублируются с сточностью до схемы. Но при этом можно схему не указывать явно, что и требовалось изначально.
22 дек 11, 20:27    [11811742]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить