Flucht einziges Zitat in openquery mithilfe der dynamischen Abfrage

Ich brauche zum abrufen von Daten aus einem verknüpften server mit einem parameter @PickedDate zum Beispiel. Die Abfrage funktioniert, wenn ich überspringen, @A und @B, aber es immer wieder einen Fehler wegen einer fehlenden Apostroph. Bitte beraten Sie, danke.

Abfrage:

Declare @OPENQUERY nvarchar(500), @TSQL nvarchar(max), @LinkedServer nvarchar(20), @A varchar(5), @B varchar(5), @PickedDate varchar(8)
Set @PickedDate = '20150501'
Set @A = 'AAA'
Set @B = 'BBB'
Set @LinkedServer = 'LinkedServerName'
Set @OPENQUERY = 'Select * From Openquery('+ @LinkedServer + ','''
Set @TSQL = 'SELECT cases.casenum, user.username, code
            From cases
            Inner join user
            On cases.casenum = user.user_id
            Where cases.date_opened > DateAdd(day,1-datepart(dw,Convert(date,' + @PickedDate + ')), Convert(date,' + @PickedDate + '))
            And cases.date_opened <= DateAdd(day,8-datepart(dw,Convert(date,' + @PickedDate + ')), Convert(date,' + @PickedDate + '))
            And cases.code IN (' + @A +', ' + @B + ')
            ORDER BY casenum'')'
Exec (@Openquery+@TSQL)

OLE DB-provider "MSDASQL" für den Verbindungsserver "LinkedServerName" Nachricht "[Sybase][ODBC Driver][SQL Anywhere]in der Spalte 'AAA' nicht gefunden".
Msg 7321, Ebene 16, Status 2, Zeile 1
Fehler beim vorbereiten der Abfrage "

  SELECT cases.casenum, username, code
  From cases
  Inner join user
  On cases.casenum = user.user_id
  Where cases.date_opened > 
    DateAdd(day,1-datepart(dw,Convert(date,20150501)), Convert(date,20150501))
  And cases.date_opened <= 
    DateAdd(day,8-datepart(dw,Convert(date,20150501)), Convert(date,20150501))
  And cases.code IN (AAA, BBB)
  ORDER BY casenum" 

für die Ausführung mit OLE DB-provider "MSDASQL" für den Verbindungsserver "LinkedServerName".

wie über Und Fällen.code IN ('+ chr(39) + @A +', '+ chr(39)+ @B " + chr(39)+ ')
char(39) stackoverflow.com/questions/14657056/...
Es verhält sich wie ("' + @A +"', "' + @B + "'). Immer noch gibt "Falsche syntax in der Nähe 'AAA'."

InformationsquelleAutor kakugiki | 2015-05-08

Schreibe einen Kommentar