why can not use stored procedure in outer apply block? need int value stored procedure dbo.getteacherid , use in where clause. here code: use [studentsdb] declare @teacheridout int; select studentlastname, studentfirstname, studentmiddlename, lessonname, score, tlastname, tfirstname, tmiddlename scores join students on scores.studentid=students.studentid join lessons on scores.lessonid=lessons.lessonid outer apply ( execute dbo.getteacherid 0, 0, @teacherid=@teacheridout -- here error select teachers.teacherlastname, teachers.teacherfirstname, teachers.teachermiddlename teachers teachers.teacherid=@teacheridout )t(tlastname, tfirstname, tmiddlename) score <=3 and there other way value stored procedure? here stored procedure dbo.getteacherid : use [studentsdb] go set ansi_nulls on go set quoted_identifier on go alter procedure [dbo].[getteacherid] @lessonid int, @groupid int, @teacherid int output begin set nocount on; select @teacherid=gr...