Bonjour,
1/ pourquoi mettez vous les filtres coté SQL server ? vous lui faites récupérer tout un tas de données pour finalement n'en utiliser que 5% :
2/ au pire, vous pourriez au mois utiliser une CTE pour récupérer une fois pour toute le contenu de cette table au lieu de la récupérer 5 fois !Citation:
En fait, la condition DI1.DI_VALUE LIKE 'XXX%' permet de filtrer 95% des lignes
Mais la première solution me semble meilleure
1 -> Vous declarez mal @rq (pas de type)Citation:
Mais il ne reconnais pas @rq ... Ne peut on pas faire un cast ?Code:
1
2
3
4
5 DECLARE @rq @rq = 'SELECT ID, COMMANDE FROM DEMANDES WHERE COMMANDE LIKE ' &char(39) &'XXX%' &char(39) &';' ; SELECT * FROM OPENQUERY(ORACLE, @rq);
2 -> vous concaténez mal les chaines ( il faut utiliser + , mais pour mettre une simple quote dans une chaine, il suffit de la doubler ) :
Code:
1
2
3
4 'SELECT ... WHERE ... LIKE ''XXX%'' '
Mais de toute façon la doc précise :
Citation:
OPENQUERY n'accepte pas de variables pour ses arguments