Wie pass int-parameter in eine dynamische sql-Abfrage

Dies ist meine gespeicherte Prozedur:

ALTER PROCEDURE [dbo].[procViewAdvSearchL1]
-- Add the parameters for the stored procedure here
    @keyword nvarchar(800),
    @CourtID    int = null,
    @SYear int = null,
    @EYear int = null

AS
BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[viewTextSearchL]'))
DROP VIEW [dbo].[viewTextSearchL]


Declare @sqlquery nvarchar(1500)
Set @sqlquery ='
CREATE VIEW viewTextSearchL
AS
    SELECT     tblCase.judgement_id AS ID, tblCase.case_number AS Case_No, tblCase.applicant_name AS Aplicant, tblCase.respondent_name AS Respondent, tblCase.case_date AS Case_Date, 
                  tblCourt.court_name AS Court_Name, tblCase.YearOfCase
FROM         tblCase INNER JOIN
                  tblCourt ON tblCase.court_id = tblCourt.court_id INNER JOIN
                  tblJudgement ON tblCase.judgement_id = tblJudgement.judgement_id
WHERE     CONTAINS(tblJudgement.judgement_desc,'+@keyword+') AND (CAST(tblCase.YearOfCase AS int) BETWEEN '+@SYear+' AND  '+@EYear+')' 

EXECUTE(@sqlquery)

END

Aber dieser Fehler gibt

Msg 137, Ebene 15, Status 2, Prozedur viewTextSearchL, Linie 9

Erklären müssen die Skalare variable "@SYear".

  • Wie steht der Parameter auskommentiert sind ...
  • Wo sind die @SYear und @EYear Variablen definiert?
  • Ich hoffe, Sie waschen die Parameter vor dem Aufruf dieser, und nicht unter den keywords parameter, die vom Anwender, oder Sie haben sich Links weit offen für sql-injection-Angriffe.
  • Auch ist das erstellen einer Ansicht für das Ergebnis einer Suche, das ist im Grunde eine single-user-Anwendung dann?
  • es scheint mir, dass der Parameter nicht Teil des sql-Befehls. Soweit ich bin besorgt, Blick kann nicht die Parameter enthalten, die in Ihrer definition
  • Warum auf der Erde Sie schreiben eine Abfrage wie diese?
  • In der unbearbeitete Frage alle param Erklärungen folgte ein --
  • Nein, haben Sie nicht. In der unbearbeiteten Fragen der code wurde nur nicht eingerückt wie der code es sah so aus, dass Art und Weise.
  • sieht aus wie dieses, das es nicht Ihr vollständiger code. Für mich sollte es geben, ein Fehler, aber andere, Fehler bei der Konvertierung von int nvarchar. Haben Sie versucht zu drucken, oder wählen Sie @sqlquery, um zu sehen, was Los ist???
  • Ich vermutete, dass ist, wie er tatsächlich ausgeführt wird als nur die Unsichtbarkeit der Parameter verursachen würde Must declare the scalar variable "@SYear"
  • Sie prolly brauchen auch die quote @keyword in den Aufruf ENTHÄLT
  • Was sind die Inhalte von @keyword?

InformationsquelleAutor user2837615 | 2013-10-11
Schreibe einen Kommentar