2016-04-21 2 views
0

У меня возникли проблемы с проверкой этой проблемы.Проверьте входной параметр в функции, возвращающей таблицы SQL Server 2008

До сих пор я мог возвращать таблицу, но не вводил проверку в функцию. Я могу это сделать, если функция возвращает целое число или создает его в процедуре. Вот мой код до сих пор:

alter function NumofEmply(@department char(25)) 
returns table 
as 
    return 
     (select count(*) #ofEmp, pc.empnum 
     from employee inner join pc on employee.empnum = pc.empnum 
     where location = @department 
     group by pc.empnum 
     having count(*) in 
(select count(*) 
from employee 
inner join pc on employee.empnum = pc.empnum 
group by location 
having count(*) <= 1) 
) 

select * 
from dbo.NumofEmply('info sys') 

Как добавить способ проверки правильности входа в функцию? 'check department'

ответ

0

Обновленный ответ - спасибо, что Шон для указания условных обозначений не допускается в RETURN.

ALTER FUNCTION NumofEmply(@Department CHAR(25)) 
RETURNS @EmployeePCs TABLE 
(
    EmpNum INT, 
    PcCount INT, 
    StatusMessage VARCHAR(100) 
) 
AS 
BEGIN 

    IF (EXISTS(SELECT * FROM Employee WHERE Location = @Department)) 
    BEGIN 
     INSERT INTO @EmployeePCs 
     SELECT 
     PC.EmpNum, 
     COUNT(PC.EmpNum) AS PCCount, 
     'Department was found.' AS StatusMessage 
     FROM Employee E 
      INNER JOIN PC ON E.EmpNum = P.EmpNum 
     WHERE Location = @Department 
     GROUP BY pc.empnum 
     HAVING COUNT(PC.EmpNum) < 2 

    END 
    ELSE 
    BEGIN 
     INSERT INTO @EmployeePCs 
     SELECT 
     0 AS EmpNum, 
     0 AS PCCount, 
     'No employees in that department!' AS StatusMessage 
    END 

    RETURN 
END 
+0

Прошу прощения, я очень новичок в SQL и передал его, получив немного грязный. Спасибо за помощь. – KingSneaky

+0

Это не работает. Вы не можете иметь оператор IF как часть возврата. –

+0

Хороший звонок, Шон. Обновленный ответ – BenM

Смежные вопросы