ストアド プロシージャは、データの選択以外の操作を実行したり、データを返さなくても機能したり、さまざまなシナリオでさまざまなセットを返したりできるため、そのような用途向けには設計されていません。
ストアド プロシージャとは異なり、関数は他のクエリとインラインで使用するのに最適です。
2 つのオプションがあります:
A) TeacherID
のみを返すスカラー関数を作成する WHERE
で使用します
CREATE FUNCTION udfGetTeacherID
(
@lessonId int, @groupId int
)
RETURNS int
AS
BEGIN
DECLARE @teacherId INT;
SELECT @teacherId = GroupTeachers.TeacherId
FROM GroupTeachers
WHERE [email protected] AND [email protected];
RETURN @teacherId;
END
GO
B) 必要なすべてのデータを取得できるテーブル値関数を作成し、それに結合 (適用) するだけです。
CREATE FUNCTION udfGetTeacherName
(
@lessonId int, @groupId int
)
RETURNS TABLE
AS
RETURN
(
SELECT t.TeacherLastName, t.TeacherFirstName, t.TeacherMiddleName
FROM Teachers t
INNER JOIN GroupTeachers g ON T.TeacherID = g.TeacherID
WHERE [email protected] AND [email protected]
)
GO
ここにいくつかの読み物があります:SQL Server のストアド プロシージャと関数の違い