2016-03-29 23 views
0

Basitçe, mssql veritabanından bir değer seçmek ve yazdırmak için Perl kullanıyorum.mssql dosyasından gelen deyimi Perl dosyasından seçin

burada benim kodudur:

my $serverName = "Alaa"; 
    my $database="blasti2b2"; 
    my $user="i2b2blast"; 
    my $pass="demouser"; 

    my $dsn = "Provider=sqloledb;Trusted Connection=yes;"; 
    $dsn .= "Server=$serverName;Database=$database"; 
    my $dbh = DBI->connect("dbi:ADO:$dsn",$user,$pass,{ RaiseError => 1, AutoCommit => 1}) || die "Database connection not made: $DBI::errstr"; 

    my $sql = $dbh->prepare("SELECT DatabaseVersion FROM BlastDatabaseDim WHERE DatabaseName = $db_name"); 
    $sql->execute(); 
    my @row 
    @row = $sql->fetchrow_array 
    my $DatabaseVersion= $row[0]; 
    print "$DatabaseVersion\n"; 

Ben $ DatabaseVersion, $ db_name ve @row içinde hata var.

Herhangi bir yol lütfen?

+

Nasıl null değerini kontrol etmek

? Denemek:
if ($DatabaseVersion eq undef) 
if ($DatabaseVersion == undef) 
if ($DatabaseVersion eq '') 
if ($DatabaseVersion eq "") 

tüm

bana bir hata verir. Teşekkür

+0

Öyle olmalı '$ SQL-> fetchrow_array();' sadece '$ SQL-> fetchrow_array' – Mithrandir

cevap

0

En az bu satırları değiştirmelisiniz:

my $sql = $dbh->prepare("SELECT DatabaseVersion FROM BlastDatabaseDim WHERE DatabaseName = ?"); 
    $sql->execute($db_name); 
    my @row = $sql->fetchrow_array(); 
+0

Yani? Update_blastdb.pl nedir? Sonuçta senin kodun olmalı. Bir satırda – Mithrandir

+0

"$ db_name" tanımlandı. Ben küresel olarak tanımlarım. Şimdi çalışıyor. Teşekkür ederim. – Alaa

+0

Mesajın ikinci bölümünü çekebilir misiniz? teşekkürler – Alaa