Je reçois les 2 erreurs suivantes lorsque je veux exécuter la requête suivante dans SQL Server - comment puis-je résoudre les erreurs? Pouvez-vous m'aider?Exécution de la procédure stockée SQL Server (mise à jour)
Run:
exec [dbo].[sp_siparisTest] 0,25,'','',''
Erreurs:
Msg 156, niveau 15, état 1, ligne 53 syntaxe incorrecte près du mot-clé 'ORDER'.
Msg 102, niveau 15, état 1, ligne 53 Syntaxe incorrecte proche de '25'.
ALTER PROC [dbo].[sp_siparisTest]
(
@PageNo INT,
@RowCountPerPage INT,
@adsoyadfilter NVARCHAR(50),
@odemetip NVARCHAR(20),
@durumu NVARCHAR(20)
)
AS
BEGIN
DECLARE @devam_ nvarchar(max)
SET @devam_ ='SELECT
u.AdiSoyadi as AdSoyad,
ot.Adi as OdemeTipAdi,
sd.Adi as SiparisDurumAdi,
s.OlusturmaTarihi as OlusturmaTarihi,
s.GenelToplam as GenelToplam
FROM
\t Siparis as s with(NOLOCK)
inner join
\t SiparisDurum as sd with(NOLOCK) on s.Durumu=sd.Id
inner join
\t Uye as u with(NOLOCK) on s.Uye_Id=u.Id
inner join
\t OdemeTip as ot with(NOLOCK) on s.OdemeTip=ot.Id where ' \t
IF(@adsoyadfilter !='')
\t SET @devam_ += '(u.AdiSoyadi LIKE ''%'' + '+ @adsoyadfilter +' + ''%'') AND'
IF(@odemetip != '')
\t SET @devam_ += ' ot.Id IN(SELECT Value FROM fn_Split('+ @odemetip +' , '','')) AND'
IF(@odemetip != '')
\t SET @devam_ += ' s.Durumu IN(SELECT Value FROM fn_Split('[email protected] +','',''))'
SET @devam_ +=' ORDER BY s.Id OFFSET (' + cast(@PageNo as nvarchar(255)) + ') ROWS FETCH NEXT (' + cast(@RowCountPerPage as nvarchar(255)) + ') ROWS ONLY'
END
EXECUTE sp_executesql @devam_
Remarque: vous ne devez pas utiliser le préfixe 'sp_' pour votre stockage procédures ed. Microsoft a [réservé ce préfixe pour son propre usage (voir * Naming Stored Procedures *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), et vous courez le risque d'un conflit de noms dans le futur. [Il est également mauvais pour les performances de votre procédure stockée] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Il vaut mieux éviter simplement 'sp_' et utiliser autre chose comme préfixe - ou pas de préfixe du tout! –
Vous devriez utiliser print @devam_ pour montrer votre erreur et résolu. –
'@ PageN'o et' @ RowCountPerPage' doivent être concaténés dans ... – scsimon