2011-01-18 3 views
0

J'ai une fonction MYSQL appelée spGetVideosByLocation. À l'heure actuelle, je l'appelle comme ceci:Tri dynamique d'une procédure/fonction stockée MYSQL

CALL spGetVideosByLocation(location); 

Cela nécessite essentiellement une requête similaire à ceci:

SELECT * FROM Videos WHERE LocationId = location; 

Ma question est, est-il un moyen de définir ORDER BY quand je l'appelle la fonction? Comment puis-je obtenir ceci:

CALL spGetVideosByLocation(location, "tableName", DESC); 

Pour interroger ceci:

SELECT * FROM Videos WHERE LocationId = location ORDER BY tableName DESC; 
+0

je pense que vous ne pouvez pas faire un select *, choisissez ce que vous voulez sélectionner, son très simple ce que vous avez besoin de regard sur exemple - ici http: //www.kbedell.com/2009/03/02/a-simple-example-of-a-mysql-stored-procedure-that-uses-a-cursor/ –

Répondre

0

Quel langage de programmation utilisez-vous? En supposant que vous utilisez php, voici le code que j'utiliserait:

function spGetVideosByLocation($locationid, $order, $orderby) 
{ 
    $sql = "SELECT * FROM Videos WHERE LocationId = '$locationid' ORDER BY $order $orderby"; 
    $result = mysql_query($sql) or die(mysql_error()); 
    //do whatever you need to to get results 
} 
+0

Je pense qu'il fait référence à une [procédure stockée MySQL] (http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html). – dkarp

+0

oh mon mauvais. J'espère que cela aide encore – blake305

+0

Blake, ce serait trop facile !! :-) J'utilise le framework php/zend, mais je veux l'appeler à partir d'une procédure/fonction stockée MYSQL. . . – TuK