私はストアドプロシージャを実行しようとしていますが、(現在は)返された行の数を取得しようとしています。 しかし、私は次のようなエラーになっておく:ここPerl - Oracle DBのストアドプロシージャを呼び出す方法
DBD::Oracle::st execute failed: ORA-00900: invalid SQL statement (DBD ERROR: OCI
StmtExecute) [for Statement "exec VSU22.DB_API.GetUsersInfo(?);" with ParamValue
s: :p1=1] at C:\NNInstall\auit.pl line 19.
はスクリプトです:私は間違っ
#!/usr/bin/perl
use strict;
use dbi;
my ($connection_string, $nn_dbh, $extract_sth);
my $dbIPAddress = "192.168.147.55";
my @row;
my $query_result=0;
my $var;
$connection_string = "dbi:Oracle:host=$dbIPAddress;sid=NNVSDB";
$nn_dbh->{RaiseError} = 1;
$nn_dbh->{RowCacheSize} = 256;
$nn_dbh = DBI->connect($connection_string, 'DBSUER', 'DBUSER')
or die "Connection failed: $DBI::errstr";
$extract_sth = $nn_dbh->prepare('exec DBUSER.API.UsersInfo(?);');
$extract_sth ->bind_param(1, 1);
my $num_ofOrows= $extract_sth->execute();
何をしているのだろうか?
1.ストアドプロシージャが正しく実行されていることをご存知ですか? Oracleでテストしましたか?もしそうなら、期待される形式でparamが渡されているかどうか知っていますか? SQL文がストアドプロシージャ内で正しく構築されていることを確認するために、コンソールまたはテンポラリテーブルに作成されたSQL文を出力するprocを得ることができますか? 3.保存されたprocコードも投稿すると便利です。 –
1.はい。 2.予想されるパラメータタイプはNUMBERです。 3.プロシージャコードを転記できません。 –
私はその文が失敗するかどうかを見るためにspで作成されたSQLを出力する方法を見つけるでしょう。もしそうでなければ、失敗している呼び出しがありますが、少なくともあなたはどこを見るべきかを知っています。 –