2010-06-16 6 views
2

Comment puis-je récupérer la valeur de retour de la procédure stockée en utilisant perl et le serveur dbi contre sql? quelqu'un pourrait donner un exemple.Perl Dbi et les procédures stockées

+0

J'ai répondu à cette question dans un autre domaine. http://stackoverflow.com/questions/64200/how-do-i-call-mysql-stored-procedures-from-perl – Nexion

Répondre

8

Il existe des exemples dans DBD :: ODBC t/dir (voir 20SqlServer.t). Fondamentalement, vous le faites (pas un exemple de travail complet):

my $output; 
my $input = 'fred'; 
my $sth = $dbh->prepare(q/{ ? = call myproc(?) }/); 
$sth->bind_param_inout(1, \$output, 100); 
$sth->bind_param(2, $input); 
$sth->execute 

Maintenant $ output devrait contenir tout ce que votre procédure a renvoyé. Assurez-vous de définir suffisamment de longueur dans bind_param_inout (les 100 ci-dessus).

+0

+1 Votre exemple vient de résoudre un de mes problèmes. Merci – bvr

+0

Merci pour le rappel sur les paramètres SQL sproc out donc +1. (-: Cela n'explique pas comment extraire la valeur de retour d'un sproc –

+1

Je ne comprends pas comment cela n'explique pas comment obtenir la valeur de retour de la procédure. "? =" Est la valeur de retour ie, si vous deviez terminer la procédure (en supposant que la valeur retournée par un proc est supportée par la base de données) avec return XXX, le premier espace réservé est la valeur de retour, l'exemple ci-dessus pourrait être une fonction (qui retourne une valeur dans tous les dbs) le premier espace réservé serait la valeur de retour.Vous devez définir ce que vous pensez être une valeur de retour avec un exemple. – bohica