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

Откуда:
Сообщений: 4
Добрый день.
Я, будучи ламером, пытаюсь написать функцию по выводу списка подчинённых конкретного сотрудника, имеющего определённый уровень в компании. В функцию в @emp передаю id сотрудника, чих подчинённых мне нужно вывести.
Вот функция:

create function getsub_emploees (@emp int) returns @tbl table (empname nvarchar(100),empid int)
   as
   begin
   declare @position int;
   declare @department int;
   declare @level int;
   select @position = pos_id from statetable where emp_id = @emp;--получили pos_id
   select @department = dep_id from statetable where emp_id = @emp;--получили dep_id
   select @level = p.poslev from statetable st inner join position p--получили poslev (УРОВЕНЬ)
   on st.pos_id=p.id where emp_id = @emp;
   if (@level=4)--работники
		begin
			return;
			--break;
		end;
  else if (@level=3)--начальники отделов
		begin
			insert @tbl select e.empname,st.emp_id from statetable st
			inner join position p on 
			p.id = st.pos_id
			inner join employee e on
			st.emp_id = e.id
			where p.poslev >3 and st.dep_id=@department;--то отображать уровнем ниже и в вашем отделе
		end;
	else if (@level=2)--директора дирекций(офисов)
		begin
			insert @tbl select e.empname,st.emp_id from statetable st
			inner join position p on 
			p.id = st.pos_id
			inner join employee e on
			st.emp_id = e.id
			inner join departments d on
			st.dep_id = d.id
			where p.poslev =3 and d.depoffice = (select depoffice from departments where id=@department);
			/*то отображать уровнем ниже и в вашей дирекции (офисе) */
		end;
		else if (@level=1)--президент
		begin
			insert @tbl select e.empname,st.emp_id from statetable st
			inner join position p on 
			p.id = st.pos_id
			inner join employee e on
			st.emp_id = e.id
			where p.poslev =2;
			/*то отображать всех уровнем ниже*/
		end;
   return;
   end;


Всё скомпилилось без ошибок. Но когда я вызываю функцию:

select dbo.getsub_emploees(6);
мне ругается:
Msg 4121, Level 16, State 1, Line 1
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.getsub_emploees", or the name is ambiguous.
Что я не так делаю?

Сообщение было отредактировано: 5 апр 14, 17:49
5 апр 14, 14:14    [15836975]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при вызове табличной функции  [new]
aleks2
Guest
1. ТАБЛИЧНАЯ функция вызывается в местах, где допустима ТАБЛИЦА

select * FROM dbo.getsub_emploees(6);
5 апр 14, 14:50    [15837062]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при вызове табличной функции  [new]
fedaykin
Member

Откуда:
Сообщений: 4
Спасибо. Заработало. Элементарно так, что аж стыдно стало.
5 апр 14, 15:05    [15837106]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить