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

Откуда: Feorina "Fury" 161
Сообщений: 4353
Описание работы - ниже.
Всё работает правильно.


CREATE PROCEDURE [dbo].[GetHistory] 
    @CardID Int,
AS
BEGIN
	SET NOCOUNT ON;

        With DirectReports (EarlyID, LaterID, [Card_ID],level)
        as
        (
            Select HistoryGroupCode, GroupCode, Card_ID, 0 level from proj_CardForm
            where Card_ID = @CardID
            union all
            Select HistoryGroupCode, GroupCode, proj_CardForm.Card_ID, level + 1 from proj_CardForm
            Inner Join DirectReports on proj_CardForm.GroupCode = DirectReports.EarlyID
        )
        Select distinct Card_ID from DirectReports
    end

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

Таблица следующего вида (дерево):
Card_ID HistoryGroupCode GroupCode
1 117 0
2 230 117
3 460 117
4 990 117
5 1000 460
6 1100 460
7 1400 460

Должен вызывать функцию так:
Select * from GetHistory(1400)

и он должен выдать мне
Card_ID
7
3
1
2 окт 13, 19:39    [14914634]     Ответить | Цитировать Сообщить модератору
 Re: C# Помогите с тем, чтобы хранимую процедуру превратить в функцию  [new]
pkarklin
Member

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

BOL->CREATE FUNCTION (Transact-SQL)->Example C.
2 окт 13, 19:49    [14914670]     Ответить | Цитировать Сообщить модератору
 Re: C# Помогите с тем, чтобы хранимую процедуру превратить в функцию  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Charles Weyland
C# Помогите с тем, чтобы хранимую процедуру превратить в функцию

А при чём тут C# ?
3 окт 13, 10:24    [14916498]     Ответить | Цитировать Сообщить модератору
 Re: C# Помогите с тем, чтобы хранимую процедуру превратить в функцию  [new]
ы
Guest
Charles Weyland
Просто результат работы функции можно использовать в другом запросе как таблицу, а результат работы процедуры - нет..

почему нет?

create table #temp...

insert into #temp
exec Процедура

select * from #temp

ну и процедура может возвращать сразу временную таблицу с данными
3 окт 13, 12:35    [14917631]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить