2011-08-11 4 views
0
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を返します。私がここで紛失しているものはありますか?リターン変数

ありがとうございました

答えて

2

変数に値を選択しています。変数は一度に1つの値しか保持できません。したがって、selectステートメントを実行すると、表から1つまたは2つまたは100の値を選択できますが、ステートメントの完了後に最後の変数だけが変数に格納されます。代わりに、このように、あなたが選択して文を挿入組み合わせ:。[DBO] * FROMそれが選択正常に動作し、このように関数を呼び出すことで

insert into @temptable(Code,ID) 
    SELECT (COALESCE(@stDeptCode + ',', '') + CAST(PPL.DeptCode AS VARCHAR(5))), peopleID 
    FROM dbo.PPL 
    WHERE @PeopleID = peopleID 
+0

[fn_DivisonCode](23415) – Kumee