2010-09-15 10 views
0

J'ai des problèmes avec une requête MySql.MySql Entity Framework Sélectionnez

string strSql = "select SQL_CALC_FOUND_ROWS *, pv.* from products pv WHERE pv.name = 'Teddy Bear';"; 

strSql += "SET @resultCount = FOUND_ROWS();" 

MySqlParameter parm = new MySqlParameter("@resultCount",MySqlDbType.Int32) 
parm.Direction = ParameterDirection.Output; 

var result = ObjectContext.ExecuteStoreQuery<Product>(strSql,parm); 
return result; 

L'erreur renvoyée est

Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près « NULL = FOUND_ROWS() » à la ligne 1

Comment puis-je obtenir @resultCount pour retourner le nombre total d'enregistrements

+1

Votre SQL était invalide en raison d'un mauvais libellé. J'ai essayé de corriger cela afin que je puisse lire votre question. Je ne sais pas si c'est le problème ou si vous ne l'avez pas transcrit correctement dans la question. –

Répondre

1

Lorsque créer le paramètre je pense que vous devez spécifier le nom sans @.

De même, vous devrez spécifier la direction du paramètre; Je pense que par défaut, il s'agit uniquement d'une entrée, ce qui signifie que vous devez fournir une valeur qui sera insérée dans la commande; ce que vous voulez, c'est la sortie. Vous pouvez spécifier la direction à travers certaines surcharges lors de la création du paramètre ou en définissant une propriété - je ne sais pas si la syntaxe diffère des autres fournisseurs car je n'ai pas travaillé avec MySql depuis un certain temps, mais cela devrait être:

parm.Direction = ParameterDirection.Output; 
+0

Avec ou sans le @ ne semble toujours pas le réparer. Le param.Direction a déjà été spécifié, mais j'ai essayé toutes les options possibles sous ParameterDirection et toujours en vain – Damon