[前][次][番号順一覧][スレッド一覧]

mysql:11282

From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Sun, 27 Mar 2005 22:54:13 +0900
Subject: [mysql 11282] Re: perlからのストアドプロシージャーの使い方を教えて下さい

川合孝典です。


----- Original Message ----- 
From: "HORI" <john.smith@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Saturday, March 26, 2005 10:06 PM
Subject: [mysql 11279] perlからのストアドプロシージャーの使い方を教えて下さい 



> いつもお世話になっております。堀と申します。
(中略)
> hori@debian:~$ ./aa.pl
> DBD::mysql::st execute failed: SELECT in a stored procedure must have
> INTO at ./aa.pl line 6.
このメッセージを読んでますか?
stored procedureの中でSELECTを実行しただけでは値を取得しようと
しても、そりゃ無理かもと思うのですけど。

http://dev.mysql.com/doc/mysql/en/create-procedure.html
のサンプルをベースにちょっとだけ変えたもので試しましたけど、
特に問題はないようでした。
#残念ながらbind_param_inoutでは
#DBD::mysql::st bind_param_inout failed: Output parameters not implemented
#ということでしたけど

[サンプル]
use strict;
use DBI;
my $hDb = DBI->connect('dbi:mysql:database=test', 'root', 'hogehoge',
             {RaiseError => 1, PrintError=> 0, AutoCommit => 1});
# 先に削除
eval {$hDb->do('DROP PROCEDURE simpleproc');};
eval {$hDb->do('DROP FUNCTION  hello');};
# プロシージャ、ファンクションを作成
eval {
$hDb->do(
'CREATE PROCEDURE simpleproc (OUT param1 INT)
 BEGIN
   SELECT COUNT(*) INTO param1 FROM t;
   SET param1 = param1 + 10;
 END');
$hDb->do(
q{CREATE FUNCTION hello (s VARCHAR(20))
  RETURNS VARCHAR(50)
 BEGIN
  RETURN CONCAT('やぁ', s , '調子どう?');
 END});
};
die $@ if($@);

# 1. simpleprocを実行して戻り値をSELECT
$hDb->do('call simpleproc(@rtnVal)');
my $iVal = $hDb->selectrow_array('SELECT @rtnVal');
print "戻り値:" . $iVal . "\n";

# 2.
my $hSt = $hDb->prepare(q{SELECT hello(?)});
$hSt->execute('堀さん');
while (my $raRes = $hSt->fetchrow_arrayref()) {
  print join(',', @$raRes) . "\n";
}

[実行結果]
戻り値:13
やぁ堀さん調子どう?

===================================================
川合 孝典 (Hippo2000)
   DBI日本語メーリングリスト管理人、Kansai.pm所属
   kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx
   http://homepage3.nifty.com/hippo2000/http://www.hippo2000.info/
perldocの日本語情報ならperldocjp:翻訳してみませんか?
  http://perldocjp.sourceforge.jp/
=================================================== 


[前][次][番号順一覧][スレッド一覧]

     11279 2005-03-26 22:06 [HORI <john.smith@xxx] perlからのストアドプロシージャーの使い方を教えて下さい
->   11282 2005-03-27 22:54 ┗["KAWAI,Takanori" <GC]                                       
     11289 2005-03-28 23:10  ┗[HORI <john.smith@xxx]