我試圖執行一個存儲過程,並且(現在)獲取返回的行數。 但我不斷收到以下錯誤: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中測試過嗎? 2.如果是這樣,你知道該參數是否以期望的格式傳遞嗎?你可以讓proc輸出創建的sql語句到控制檯或臨時表來驗證sql語句是否正在構建正確的存儲過程? 3.發佈存儲的proc代碼也是有用的。 –
1.是的。 2.期望的參數類型是NUMBER。 3.我無法發佈程序代碼。 –
好的。我會找到一種方法來輸出在sp上創建的sql來查看該語句是否失敗。如果沒有,那麼它的通話失敗 - 但至少你知道在哪裏尋找。 –