S'échapper de devis unique en openquery à l'aide de requête dynamique

J'ai besoin de récupérer des données à partir d'un serveur à l'aide d'un paramètre, @PickedDate par exemple. La requête fonctionne très bien si je saute @A @B, mais il retourne toujours une erreur due à la disparition d'un seul devis. Veuillez informer, merci.

La requête:

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)

Fournisseur OLE DB "MSDASQL" du serveur lié "LinkedServerName" a retourné le message "[Sybase][ODBC Driver][SQL Anywhere]Colonne " AAA "non trouvé".
Msg 7321, Niveau 16, État 2, Ligne 1
Une erreur s'est produite lors de la préparation de la requête "

  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" 

pour exécution à l'encontre du fournisseur OLE DB "MSDASQL" du serveur lié "LinkedServerName".

comment sur Et cas.code ("+chr(39) + @A +', ' + chr(39)+ @B + chr(39)+ ')
char(39) stackoverflow.com/questions/14657056/...
Il se comporte de la même chose que ( "'+ @ + "' , "' + @B + "'). Donne toujours la "syntaxe Incorrecte près de 'AAA'."

OriginalL'auteur Weihui Guo | 2015-05-08