2015-01-14 3 views
0

이 코드를 사용하여 데이터베이스에 연결하고 일부 SQL 쿼리를 수행하려고 할 때마다 응답하지 않습니다.펄 스크립트 내에서 SQL을 호출하는 방법

my $connect_str = `/osp/local/etc/.oralgn $srv_name PSMF`; 
my $sqlFile = "/osp/local/home/linus/amit/mytest.sql"; 
my ($abc, $cde)= split (/\@/ , $connect_str); 
print "$abc"; 

$ORACLE_SID=SDDG00; 
`export $ORACLE_SID`; 

#chomp($abc); 

#$abc=~ s/\s+$//; 
`sqlplus $abc`; 

open (SQL, "$sqlFile"); 


while (my $sqlStatement = <SQL>) { 
    $sth = dbi->prepare($sqlStatement) 
     or die (qq(Can't prepare $sqlStatement)); 

      $sth->execute() 
        or die qq(Can't execute $sqlStatement); 
        } 

Perl에서 SQL 명령을 어떻게 호출합니까?

답변

3

documentation for the DBI module을 읽는 것이 좋습니다.

문제는이 줄로 보입니다.

$sth = dbi->prepare($sqlStatement) 

"dbi"클래스의 prepare 메서드를 호출하려고합니다. 그러나 당신은 "dbi"라고 불리는 클래스를 여러분의 프로그램에 가지고 있지 않습니다. (적어도, 여러분이 우리에게 보여준 코드에서 그것을 볼 수는 없습니다.)

펄에서 데이터베이스를 사용하려면 다음 작업을 수행해야합니다

1 /를 DBI 모듈로드 (참고, "DBI", "DBI"하지 - 펄은 대소 문자를 구분합니다).

use DBI; 

2/연결 데이터베이스 및 데이터베이스 핸들을합니다 (connect() 메소드의 인수에 대한 자세한 내용은 DBD::Oracle documentation 읽기) 얻을.

my $dbh = DBI->connect('dbi:Oracle:dbname', $user, $password); 

3/그런 다음이 데이터베이스 핸들을 사용하여 SQL 문을 준비 할 수 있습니다.

my $sth = $dbh->prepare($sqlStatement); 
관련 문제