Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

MSSQL&Perl

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
chevy



Зарегистрирован: 23.01.2006
Сообщения: 13
Откуда: Ижевск

СообщениеДобавлено: Пн Янв 23 2006 15:16    Заголовок сообщения: MSSQL&Perl Ответить с цитатой

Через Perl подключаюсь к базе в MSSQL выполняю какой-нибудь запрос. После чего долго грузится и потом ничего не выдает, если нажимаешь остановить загрузку страницы, то показывает только часть той информации которая должна быть найдена.

Помогите решить проблемму.

Вот текст программы

Код:
$dbh = new Win32::ODBC("SERVER=$serv;Driver={Sql Server};DATABASE=$base;UID=$user;PWD=$pswd;");
формирование запроса
$dbh->Sql($zapros);

while($dbh->FetchRow())
{
 %h = $dbh->DataHash();
 print "<tr>
         <td><a href=\"$about?id=$h{'kodstud'}&name=$h{'name'}&family=$h{'family'}&otch=$h{'otch'}\" class=Content target=main>$h{'family'}</a></td>
         <td><a href=\"$about?id=$h{'kodstud'}&name=$h{'name'}&family=$h{'family'}&otch=$h{'otch'}\" class=Content target=main>$h{'name'}</a></td>
         <td><a href=\"$about?id=$h{'kodstud'}&name=$h{'name'}&family=$h{'family'}&otch=$h{'otch'}\" class=Content target=main >$h{'otch'}</a></td>
         <td><a href=\"$about?id=$h{'kodstud'}&name=$h{'name'}&family=$h{'family'}&otch=$h{'otch'}\" class=Content target=main >$h{'Ngroup'}</a></td>
        </tr> ";
}

$dbh->Close();
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aragaer



Зарегистрирован: 28.03.2005
Сообщения: 164

СообщениеДобавлено: Вт Янв 24 2006 01:52    Заголовок сообщения: Ответить с цитатой

А что такое DataHash?
Кажется, должен быть fetchrow_hashref, там уже жить было бы проще.

Ну и ...
Код:
print "<tr>\n".            # начало символьной строки
   (join '"", map          # внешний join и внешний main
      qq(\t<td><a href="$about?id=$h{kodstud}&).
         (join "&", map "$_=$h{$_}", @plist). # простенький внутренний join+map, тут все должно быть понятно.
         qq(" class=Content target=main>$h{$_}</a></td>\n),
      (@plist, 'Ngroup')). # список аргументов, попадающих во внешний map, и конец внешнего join
   "\t</tr>";            # конец символьной строки
, где
Код:
@plist = qw(name family otch)



Обожаю перл за его офигенные конструкции Cool
_________________
Open your eyes.
And Awaken.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
chevy



Зарегистрирован: 23.01.2006
Сообщения: 13
Откуда: Ижевск

СообщениеДобавлено: Ср Янв 25 2006 09:31    Заголовок сообщения: Ответить с цитатой

FetchRow()+DataHash() - это тоже самое, что и fetchrow_hashref.
Предложенный вариант также не работает.
Если передавать только один параметр, например Ngroup, то работает без проблем, а если все четыре, то не работает.
Можно, конечно, передавать id, но тогда придется использовать дополнительный запрос в другую таблицу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Aragaer



Зарегистрирован: 28.03.2005
Сообщения: 164

СообщениеДобавлено: Ср Янв 25 2006 11:23    Заголовок сообщения: Ответить с цитатой

Хмм... Кажется понял.
В том виде, в каком оно сейчас, при каждом проходе цикла происходит обращение к базе. Лучше сделать один запрос, а потом разбираться со всем вытащенным:
Код:
$sth = $dbh->prepare(запрос);
$sth->execute;
while($sth->fetchrow_array) {
...
}
Или я что-то неправильно понял?
_________________
Open your eyes.
And Awaken.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
chevy



Зарегистрирован: 23.01.2006
Сообщения: 13
Откуда: Ижевск

СообщениеДобавлено: Ср Янв 25 2006 14:58    Заголовок сообщения: Ответить с цитатой

Как я понимаю
Код:
$dbh->SQL($zapros);
выполняет запрос, т.е. он аналогичен
Код:
$sth=$dbh->prepare($zapros);
$sth->execute();
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
chevy



Зарегистрирован: 23.01.2006
Сообщения: 13
Откуда: Ижевск

СообщениеДобавлено: Ср Янв 25 2006 15:50    Заголовок сообщения: Ответить с цитатой

Все я нашел свою ошибку в формировании запроса. Я просто не искал в базе kodstud, который использовал при формировании ссылки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...