вызов хранимой процедуры (perl mysql-5.0.19)

Модератор: Модераторы разделов

Аватара пользователя
Виталмий
Сообщения: 468
Статус: Любитель
ОС: Gentoo Linux

вызов хранимой процедуры

Сообщение Виталмий »

создаю процедуру:

Код: Выделить всё

CREATE PROCEDURE `new_proc`()
BEGIN
SET @sql = "select RAND()";
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;


выполняю:

Код: Выделить всё

mysql> call new_proc();
+------------------+
| RAND()           |
+------------------+
| 0.86559206700473 |
+------------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)


но если её вызывать в перле:

Код: Выделить всё

use DBI;
$dbh = DBI->connect("DBI:mysql:test:localhost","root", "") or die;
$query=$dbh->prepare("CALL new_proc()");
$query->execute;

то говорит:
PROCEDURE test.new_proc can't return a result set in the given context
linux-2.6.17-gentoo-r5 x86 on AMD Athlon XP 2000+
OpenSuse 11.0 x86_64 on Sony VNG-FZ31ER
Спасибо сказали:
Аватара пользователя
Omnifarious
Сообщения: 119
ОС: Gentoo x86_64

Re: вызов хранимой процедуры

Сообщение Omnifarious »

Большинство api, в то числе и в perl, не умеют получать значение, возвращаемое процедурой.
Если бы процедура ничего не возвращала, то, скорее всего, выполнялась бы нормально.
There is more than one way to do it
Спасибо сказали:
Аватара пользователя
Виталмий
Сообщения: 468
Статус: Любитель
ОС: Gentoo Linux

Re: вызов хранимой процедуры

Сообщение Виталмий »

вопрос решил.
установил модуль DBD-mysql версии 4.001 и всё заработало на ура!!!
до этого было DBD-mysql версии 3.0002

Спасибо за внимание!
linux-2.6.17-gentoo-r5 x86 on AMD Athlon XP 2000+
OpenSuse 11.0 x86_64 on Sony VNG-FZ31ER
Спасибо сказали: