2016-05-09 7 views
0

私はメインスクリプトからこのサブルーチンを実行しています。perlからストアドプロシージャを呼び出す

それが入力パラメータを持つ最初の行を印刷して、メインスクリプト {sub($var)}から呼び出さなっている
print "parameter passed: $_[0]"; 
my $connect_string = 'test/[email protected]'; 
my $sqlplus_settings = ''; 
my $task = ''; 
my $result = qx { sqlplus $connect_string << EOF 
$sqlplus_settings exec {pkgname.procedure($_[0], 'abc',$task); 
#exit; 
EOF 

。しかし、手続きは実行されていません。

+0

コードに_subroutine_はありません。 – simbabque

+5

[DBI](http://p3rl.org/DBI)を使用してデータベースと会話します。 – choroba

+0

'use strict'と' use warnings'を追加してください。しかし、それがなくても、あなたのHEREDOCで構文エラーについて教えてください。 – simbabque

答えて

0

ユーザー@chorobaが上記のコメントで述べたように、IMHOはPerlのDBIモジュールを使用するのが最良の方法です。ここで

は、Oracleで動作するでしょう、あなたのストアドプロシージャを呼び出す例です:

$dbh->do("BEGIN your_procedure; END;"); 

そして、ここではあなたがDBIモジュールを始める手助けするためのリンクです:

​​

HTH

+0

すべての返信をありがとう。私はDBIを使ってストアドプロシージャを呼び出すことができました。私はここに投稿した最後のコードスニペットで、少しの見積もりを見逃していました。再度、感謝します。 – GSG

+0

@Gourab Sengupta - 私たちが手伝ってくれてうれしいです。私はこの回答のアップヴォートを取得できますか?前もって感謝します、 – tale852150

0

私のためにこのソリューションはうまくいきます:

my $execute=q~BEGIN your_procedure; END~; 
my $sth= $dbh->prepare($execute); 
    $sth->execute() 
関連する問題