Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBI и Хранимые процедуры 
:(
    Опции темы
djkostya
Дата 20.7.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Ребята есть процедура в Mysql 5

CREATE PROCEDURE `p`()
COMMENT 'Procedure'
SELECT * FROM test;



Вопрос а как обратиться из под DBI к этой процедуре

Вроде должно быть call только она не пашет....
 
PM MAIL WWW ICQ   Вверх
comtat
Дата 20.7.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Т.е не пашет ? А что говорит ? И как ты ее вызываешь ?

Добавлено @ 11:25 
вот так нужно вызывать
Код

my $s0=$s->prepare (qq{CALL p});
$s0->execute ();
 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 20.7.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



DBD::mysql::st execute failed: PROCEDURE agent.proc5 can't return a result set in the given context at test_dbi.pl line 39.

Добавлено @ 11:51 
Мне нажо чтоб в обратку пришли данные 
PM MAIL WWW ICQ   Вверх
comtat
Дата 20.7.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Ошибка говорит что не может возвратить набор результата в данном контексте
а че на в test_dbi.pl line 39 ?? 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 20.7.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Ну это скрипт и строка в скрипте...

Не подскажешь куда копать???????????? 
PM MAIL WWW ICQ   Вверх
comtat
Дата 20.7.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Че в этой строке делается ??
не там ли вызывается эта процедура ?? 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 20.7.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



my $sth = $dbh->prepare(qq{CALL p()});
$sth->execute();

my @site;
while (my @row = $sth->fetchrow_array() ){
    print "$row[0]<br>";
}


В 39 вызываеться $sth->execute();

Толк то

Пробовал и так 
my $sth = $dbh->prepare("CALL p()");
$sth->execute(); 
PM MAIL WWW ICQ   Вверх
djkostya
Дата 20.7.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Самое интересное что в командной строке она нормально выполняеться 
PM MAIL WWW ICQ   Вверх
comtat
Дата 20.7.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Если ты написал в командной CALL p()
и все сработало, а в перле не работает, значит синтаксически все правильно...
Очень похоже на несовпадение версий...
Сервак 5, а клиент 3... например  


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 20.7.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Нет всё ставил из портов

p5-DBD-mysql50-3.0006
Mysql 5.0.22
DBI 1.51

Вопрос вобще кто нибудь их нормально запустил эти процедуры...  

Это сообщение отредактировал(а) djkostya - 20.7.2006, 13:53
PM MAIL WWW ICQ   Вверх
comtat
Дата 20.7.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Я даже не знаю чем, тебе щас помочь у меня варианты закончились  smile  


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
comtat
Дата 27.7.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



я делаю так создаю *.pm файл в нем процедуру
Код

#!/usr/bin/perl
use DBI;
use strict;

my $cc;

my $operator="'$ENV{REMOTE_USER}\@$ENV{REMOTE_ADDR}'" || "USER()";

BEGIN
{
$cc=DBI->connect ("DBI:mysql:дб:хост", "юзер", "пароль", {RaiseError=>0, PrintError=>0});
}
...
sub C_Update_Record
{
   #процедура
}

А из *.pl вызываю так
Код

C_Update_Record (параметры) || return undef;

Может применишь такой способ ??  smile   

Это сообщение отредактировал(а) comtat - 27.7.2006, 07:56


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 24.10.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Короче проблема решена объясняю в чём было дело...

Если у вас стоит ниже этого DBD-mysql-3.0008_1 то хранимые процедуры пахать не будут будут пахать максимум функции....


Для соединения с базой пользуемся 

my $dbh = DBI->connect("DBI:mysql:database=$base;host=$hostname;mysql_multi_results=1", "$user", "$password");

Это бяка должна стоять обязательно mysql_multi_results=1

Добавлено @ 21:39 
Добавлю

под mod_perl часто возникает такая ошибка плохо или хорошо я не знаю, так но вроде пашет

DESTROY: Error Commands out of sync; you can't run this command now while close stmt

PM MAIL WWW ICQ   Вверх
comtat
Дата 25.10.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: нет
Всего: 71



Как и предпологались проблема в версии
спасибо за инфу возможно прегодится 


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
djkostya
Дата 30.10.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Блин ну я псих


Народ что знали все mysql_multi_results=1 отключите её нафиг.....если вы используете хранимые более чем один раз в скрипте...
И включите тогда когда вам надо с базы вытаскивать большие запросы....

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1089 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.