вернуть более 1 значение в переменную @ table - PullRequest
0 голосов
/ 11 августа 2011
ALTER FUNCTION [dbo].[fn_DivisonCode] (@PeopleID int)
RETURNS @temptable TABLE (Code varchar(100), ID varchar(100))
AS
begin

DECLARE @stDeptCode VARCHAR(100)
DECLARE @peopleID VARCHAR(100)

SELECT 
      @stDeptCode = (COALESCE(@stDeptCode + ',', '') + CAST(PPL.DeptCode AS VARCHAR(5))),
      @peopleID = peopleID
FROM dbo.PPL
WHERE PeopleID = peopleID 

INSERT INTO @temptable(Code, ID) 
  VALUES(@stDeptCode, @peopleID)

return
end

SELECT [dbo].[fn_DivisonCode](23415)

Когда я вызываю функцию, она должна вернуть 2 значения, но здесь она возвращает только значения @stDeptCod, а не @peopleID.Есть ли что-то, чего мне здесь не хватает?

Спасибо

1 Ответ

2 голосов
/ 11 августа 2011

Вы выбираете значения в переменные. Переменная может содержать только одно значение за раз, поэтому, когда вы запускаете оператор SELECT, он может выбрать одно, или два, или 100 значений из таблицы, но только последнее сохранится в переменной после завершения оператора. Вместо этого комбинируйте выбранные и вставленные операторы, как показано ниже:

insert into @temptable(Code,ID)
  SELECT (COALESCE(@stDeptCode + ',', '')  +  CAST(PPL.DeptCode AS VARCHAR(5))), peopleID
    FROM dbo.PPL  
    WHERE @PeopleID = peopleID   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...