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

Откуда:
Сообщений: 585
Всем привет!
У меня есть функция:
CREATE FUNCTION Get(@ID int)
RETURNS @res TABLE (ID INT, Name varchar(1000))  AS  
BEGIN 
	if @ID is not null and @ID!=0
		BEGIN
			INSERT INTO @res (ID,Name)  select distinct ID, Name from Geo where IDParent=@ID
		END
	if @ID is null or @ID=0
			INSERT INTO @res (ID,Name) select distinct ID, Name from Geo where ID in (select IDParent from Geo) and IDParent=0
	RETURN
END

Как мне прописать условее, что если @ID is not null и записей в таблице @res нет, то присвоить
select @ID=IDParent from Geo where ID=@ID
и прокрутить функцию еще раз?
12 ноя 04, 10:52    [1100749]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
MVM
Member

Откуда:
Сообщений: 271
Суть функции - вьюшка.
Попробуйте во вьюшке прописать "insert" - не получится.
Может Вы хотите использовать хранимую процедуру?
12 ноя 04, 11:10    [1100850]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
kika
Member

Откуда:
Сообщений: 585
А входящий параметр во вьюху можно передавать! Если да, то , пожалуйста, подскажите как это правильно прописать?
12 ноя 04, 11:23    [1100917]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
так делать незяяя :) чтобы в селекте использовать функцию, которая бы добавляла записи :) наверное поэтому бай дезаин это убрали :)

для спящего время бодрствования равносильно сну
12 ноя 04, 11:46    [1101065]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
aleks2
Guest
Что-то тут знатоки пудрят неофиту мозги...

Где же тов. просит невозможного?

CREATE FUNCTION Get(@ID int)
RETURNS @res TABLE (ID INT, Name varchar(1000)) AS
BEGIN
declare @stop bit
set @stop=0
while (@stop=0) begin
if @ID is not null and @ID!=0 BEGIN
INSERT INTO @res (ID,Name) select distinct ID, Name from Geo where IDParent=@ID
END ELSE begin
INSERT INTO @res (ID,Name) select distinct ID, Name from Geo where ID in (select IDParent from Geo) and IDParent=0
end

if not exists(select * from @res) AND @ID is not null begin
select @ID=IDParent from Geo where ID=@ID
end else begin
set @stop=1
end
end
RETURN
END
12 ноя 04, 14:21    [1101886]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
aleks2
Guest
Ах ты, блин, красоту забыл сохранить....
CREATE FUNCTION Get(@ID int)
RETURNS @res TABLE (ID INT, Name varchar(1000))  AS  
BEGIN 
declare @stop bit
set @stop=0
while (@stop=0) begin
	if @ID is not null and @ID!=0 BEGIN
		INSERT INTO @res (ID,Name)  select distinct ID, Name from Geo where IDParent=@ID
	END ELSE begin
		INSERT INTO @res (ID,Name) select distinct ID, Name from Geo where ID in (select IDParent from Geo) and IDParent=0
	end

	if not exists(select * from @res) AND @ID is not null begin
		select @ID=IDParent from Geo where ID=@ID	
	end else begin
		set @stop=1
	end
end
RETURN
END
12 ноя 04, 14:22    [1101890]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с составлением функции  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
пардон, не туда глянул.


для спящего время бодрствования равносильно сну
12 ноя 04, 14:49    [1102047]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить