سلام خدمت دوستان
یک SP داینامیک برای جستجو بر اساس چند پارامتر نوشتم. ولی به سینتکس ایراد میگیره. خطا در مقدار دهی SELECT @sql = است، برای کاراکتر Space و / که استفاده کردم .
این Select به صورت جدا به درستی عمل می کند. ولی در اینجا چون در بین ' ' قرار گرفته باعث خطای نگارش می شود.
ممنون میشم راهنماییم کنید که چطور خطا رو رفع کنم
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- ================================================== ========================================
-- Entity Name: s_Courses_SelectCourses
-- Author: M Razavi
-- Create date: 5/29/2010 8:55:30 AM
-- Description: This stored procedure is intended for selecting a specific row from Courses table
-- ================================================== ========================================
ALTER Procedure [dbo].[s_Courses_Search]
@stnid int = NULL,
@ttpid int = NULL,
@lctid int = NULL,
@crsstatus int = NULL,
@debug bit = 0
AS
DECLARE @sql nvarchar(4000),
@paramlist nvarchar(4000)
SELECT @sql =
'SELECT dbo.Courses.crsid, dbo.Skill.sklname AS حرفه, dbo.Mentor.mntfamily +' '+ dbo.Mentor.mntname AS [نام مربی], SUBSTRING(dbo.Courses.crsstartdate,
1, 4) + '/' + SUBSTRING(dbo.Courses.crsstartdate, 5, 2) + '/' + SUBSTRING(dbo.Courses.crsstartdate, 5, 2) AS [تاریخ شروع],
SUBSTRING(dbo.Courses.crsenddate, 1, 4) + '/' + SUBSTRING(dbo.Courses.crsenddate, 5, 2) + '/' + SUBSTRING(dbo.Courses.crsenddate, 5, 2)
AS [تاریخ پایان], SUBSTRING(dbo.Courses.crsexam1date, 1, 4) + '/' + SUBSTRING(dbo.Courses.crsexam1date, 5, 2)
+ '/' + SUBSTRING(dbo.Courses.crsexam1date, 5, 2) AS [تاریخ آزمون کتبی],SUBSTRING(dbo.Courses.crsexam2date, 1, 4) + '/' + SUBSTRING(dbo.Courses.crsexam2date, 5, 2)
+ '/' + SUBSTRING(dbo.Courses.crsexam2date, 5, 2) AS [تاریخ آزمون عملی], dbo.Courses.crsregisteredno AS [تعداد معرفی شده],
dbo.Courses.crsabsentno AS [تعداد غایبین], dbo.Courses.crspassedno AS [تعداد قبولین]
FROM dbo.Courses INNER JOIN
dbo.Location ON dbo.Courses.lctid = dbo.Location.lctid INNER JOIN
dbo.Skill ON dbo.Courses.sklid = dbo.Skill.sklid AND dbo.Courses.sklid = dbo.Skill.sklid INNER JOIN
dbo.Mentor ON dbo.Courses.mntid = dbo.Mentor.mntid INNER JOIN
dbo.Station ON dbo.Courses.stnid = dbo.Station.stnid INNER JOIN
dbo.TutorialType ON dbo.Courses.ttpid = dbo.TutorialType.ttpid
WHERE 1 = 1'
IF @stnid IS NOT NULL
SELECT @sql = @sql + ' AND Courses.stnid = @xstnid'
IF @ttpid IS NOT NULL
SELECT @sql = @sql + ' AND Courses.ttpid = @xttpid'
IF @lctid IS NOT NULL
SELECT @sql = @sql + ' AND Courses.lctid = @xlctid'
IF @crsstatus IS NOT NULL
SELECT @sql = @sql + ' AND Courses.crsstatus = @xcrsstatus'
SELECT @sql = @sql + ' ORDER BY Courses.stnid'
IF @debug = 1
PRINT @sql
SELECT @paramlist = '@xstnid int = NULL,
@xttpid int = NULL,
@xlctid int = NULL,
@xcrsstatus int = NULL'
EXEC sp_executesql @sql, @paramlist,
@stnid, @ttpid, @lctid, @crsstatus
با تشکر