2010-08-17 13 views
0

J'essaie de référencer une procédure stockée.mysql 5.1: comment puis-je utiliser la commande benchmark() pour tester un appel à une procédure stockée?

select benchmark(100000000,(select 1)); 

cela fonctionne de référence

mais l'indice de référence suivant ne fait pas:

do benchmark(1000,(call test_login_user('a'))); 

il produit l'erreur suivante:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call xpofb_login_user('a')))' at line 1 

des idées comment résoudre le problème?

Répondre

5

Vous ne pouvez pas le faire avec référence(), mais vous pouvez créer une procédure stockée pour le faire.

Voici un exemple:

delimiter $$ 

create procedure benchmark_test_login_user (p_username varchar(100), 
    p_count int unsigned) 
begin 
    declare v_iter int unsigned; 
    set v_iter = 0; 
    while v_iter < p_count 
    do 
    call test_login_user(p_username); 
    set v_iter = v_iter + 1; 
    end while; 
end $$ 

delimiter ; 

call benchmark_test_login_user('a',1000); 
+0

Ce n'est pas exactement la même chose cependant. – Mchl

+1

Non, mais c'est une solution de contournement raisonnable. –