Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como chamo os procedimentos armazenados do MySQL do Perl?


Os procedimentos armazenados do MySQL que produzem conjuntos de dados precisam que você use Perl DBD::mysql 4.001 ou posterior. (http://www.perlmonks.org/?node_id=609098 )

Abaixo está um programa de teste que funcionará na versão mais recente:
mysql> delimiter //
mysql> create procedure Foo(x int)
  -> begin
  ->   select x*2;
  -> end
  -> //

perl -e 'use DBI; DBI->connect("dbi:mysql:database=bonk", "root", "")->prepare("call Foo(?)")->execute(21)'

Mas se você tiver uma versão muito antiga do DBD::mysql, obterá resultados como este:
DBD::mysql::st execute failed: PROCEDURE bonk.Foo can't return a result set in the given context at -e line 1.

Você pode instalar o DBD mais recente usando o CPAN.