次の SQL クエリに問題があります。このクエリを where 条件なしで実行すると正常に動作します...しかし、where 条件を使用すると動作しません..次のエラー メッセージが表示されます..
「メッセージ 137、レベル 15、状態 2、行 4 スカラー変数 "@courseid1" を宣言する必要があります。」
ALTER PROCEDURE [dbo].[SP_Attendance]
@courseid as int=null, @subjid int=null
AS
Declare @colList varchar(max)
Declare @qry varchar(max)
Declare @courseid1 as int=@courseid,
@subjid1 int=@subjid
SET @colList = STUFF((SELECT distinct ',' + QUOTENAME(SA.Attend_Date)
FROM Student_Attendance_Sheet SA
FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')
,1,1,'')
SET @qry = 'SELECT Roll_No, EnrollmentNo, STUD_FNAME + STUD_MNAME + STUD_LNAME as [Student Name] , '+@colList+'
FROM (
select SA.Roll_No, SA.Attend_Date, SA.Attendance from Student_Attendance_Sheet SA
where (SA.Course_ID = +@courseid1+) and (SA.Subject_ID = +@subjid1+)
) as s
PIVOT
(
MAX(Attendance)
FOR Attend_Date IN (' + @colList + ')
) pvt '
print(@qry)
Exec(@qry)
exec SP_Attendance 2、3
もう1つ.. where条件を使用しているとき
SET @colList = STUFF((SELECT distinct ',' + QUOTENAME(SA.Attend_Date)
FROM Student_Attendance_Sheet SA
where (SA.Course_ID = +@courseid1+) and (SA.Subject_ID = +@subjid1+)
FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')
,1,1,'')
それは機能しますが、フィルタリングはありません..だから、上記の方法でwhere条件を使用する必要があります...この問題を解決するために私を助けてください...ありがとう