Pourquoi SQL Anywhere ignore-t-il le paramètre @ nommé?

.net ado.net dapper sqlanywhere

Question

J'utilise Dapper pour interroger une source de données SQL Anywhere et j'obtiens une erreur qui fait que le préfixe "@" de ma valeur de clause where est ignoré.

 Double balance = qb.Query<Double>("select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = @listid", new { listid = ListID }).Single();

Erreur:

Column '@listid' not found

J'ai accès à cette table et ma requête manuelle fonctionne correctement.

select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = '8000000B-1433635931'

Exemple:

entrer la description de l'image ici

Réponse acceptée

Avec SQL Anywhere et son fournisseur de données .Net (au moins Sap.Data.SQLAnywherev4.5), les paramètres doivent être préfixés avec : au lieu de @ .

Cela me semble être le problème dans votre cas. Mais je ne sais pas si Dapper est censé soustraire le comportement spécifique de ce fournisseur à ses utilisateurs.

Donc, vous devriez essayer avec:

Double balance = qb.Query<Double>(
    "select end_balance_amt from QBReportAdminGroup.v_lst_customer where list_ident = :listid",
    new { listid = ListID }).Single();

Réponse populaire

Il me semble que vous essayez d'utiliser une variable @listid qui n'est pas déclarée.

Si j'utilise DBISQL avec SQL Anywhere, j'aurais écrit quelque chose comme ceci:

COMMENCER

DECLARE @list varchar (20);

SET @list = '8000000B-1433635931';

sélectionnez end_balance_amt de QBReportAdminGroup.v_lst_customer où list_ident = @listid ";

FIN



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi