2014-11-03 5 views
-2

Почему я получаю ошибку при подготовке?

#!/usr/bin/perl 
 

 
use strict; 
 

 
use Sybase::DBlib; 
 

 
use Sys::Hostname; 
 
use Getopt::Std; 
 

 
## additionals 
 
use lib "/opt/chsdjg/perllib"; 
 
use ADDITIONALS; 
 

 
    my ($dsn, $database, $dbserver, $dbname, $user, $passwd, $rmdb_config) = ('','','','','','',''); 
 

 
    my $dbhandle; 
 
    $rmdb_config = "$ENV{ENV_DIR}"; 
 
    $dsn   = "dbi:Sybase"; 
 
    $database  = join (' ~ ',$dsn, $dbserver, $dbname, $user, $passwd, $rmdb_config); 
 
    $dbhandle  = connect_me($database); 
 

 
    my $ctl= "select * from table_name"; 
 
    
 
    $dbhandle->dbcmd($ctl); 
 
    my $ret = $dbhandle->dbsqlexec; 
 
    my $res = $dbhandle->dbresults; 
 

 
    
 
my @dat; 
 
    while($dbhandle->dbresults != NO_MORE_RESULTS) { 
 
     while(@dat = $dbhandle->dbnextrow) { 
 
    print "@dat\n"; 
 
} 
 
}

Я не использовал правильную связь в первый раз. Теперь это код, он делает инструкцию select и показывает результат. Надеюсь, это помогает людям.

+4

Таким образом, у вас нет 'use strict' в вашем оригинальном скрипте. Почему вы добавили его в код выше? –

+1

В строке 5 вы устанавливаете '$ dbhandle', а затем используете' $ dbh'. – dgw

ответ

2

Вы никогда не создаете дескриптор базы данных ($ dbh undefined).

Добавить

my $dbh = $dbh = DBI->connect($data_source, $username, $password) 
      or die $DBI::errstr; 

Для вашего кода. См. Documentation на CPAN для получения дополнительной информации.

+0

Да, спасибо, это была моя проблема. Приветствия m8 – theweeknd

Смежные вопросы