use warnings; use strict; use DBI; my $dsn = 'DBI:mysql:database=test'; my $dbh = DBI->connect($dsn, @ARGV, {RaiseError => 1}); my $sth = $dbh->prepare('SELECT "Hello World"'); $sth->execute(); printf "SELECT rows = %d\n", scalar $sth->rows; printf "\t(@$_)\n" for $sth->fetchrow_arrayref; my $v; $sth = $dbh->prepare('CALL DebugMe(?)'); $sth->execute($v); $sth->execute(\$v); __END__ SELECT rows = 1 (Hello World) DBD::mysql::st execute failed: OUT or INOUT argument 1 for routine test.DebugMe is not a variable or NEW pseudo-variable in BEFORE trigger at sscce.pl line 14. DBD::mysql::st execute failed: OUT or INOUT argument 1 for routine test.DebugMe is not a variable or NEW pseudo-variable in BEFORE trigger at sscce.pl line 14.