Оракл и входные и выходные параметры.
Добавлено: 24 ноя 2004, 08:58
Делаю небольшую выборку из БД Оракл на перле:
declare
B string(250);
BD date;
Language integer;
Status integer;
Param1 string(250);
Param2 string(250);
Param3 string(250);
Param4 string(250);
Param5 string(250);
Res integer;
begin
TipaBazar.PP_TipaProcedure ('', '',B,BD,Language,Status,Param1,Param2,Param3,Param4,Param5,Res);
commit;
dbms_output.put_line(B);
dbms_output.put_line(BD);
dbms_output.put_line(Language);
dbms_output.put_line(Status);
dbms_output.put_line(Param1);
dbms_output.put_line(Param2);
dbms_output.put_line(Param3);
dbms_output.put_line(Param4);
dbms_output.put_line(Param5);
dbms_output.put_line(Res);
end;
далее
$dbh->{RaiseError} = 1;
$dbh->func( 2000, 'dbms_output_enable' );
$csr = $dbh->prepare($st);
$csr->execute;
# retreive the string
@array = $dbh->func( 'dbms_output_get' );
В результате я должен получить массив выходных параметров, т.е. длина массива 10 значений. Но. Я получаю 12. Причем первые 2 - содержат внутренние обращения запроса (оракловые обращения при выполнении процедуры).
Я бы не обратил на это внимание, но данная процедура работала с другой БД и выдавала правильные значения.
В чем собака порыта?
declare
B string(250);
BD date;
Language integer;
Status integer;
Param1 string(250);
Param2 string(250);
Param3 string(250);
Param4 string(250);
Param5 string(250);
Res integer;
begin
TipaBazar.PP_TipaProcedure ('', '',B,BD,Language,Status,Param1,Param2,Param3,Param4,Param5,Res);
commit;
dbms_output.put_line(B);
dbms_output.put_line(BD);
dbms_output.put_line(Language);
dbms_output.put_line(Status);
dbms_output.put_line(Param1);
dbms_output.put_line(Param2);
dbms_output.put_line(Param3);
dbms_output.put_line(Param4);
dbms_output.put_line(Param5);
dbms_output.put_line(Res);
end;
далее
$dbh->{RaiseError} = 1;
$dbh->func( 2000, 'dbms_output_enable' );
$csr = $dbh->prepare($st);
$csr->execute;
# retreive the string
@array = $dbh->func( 'dbms_output_get' );
В результате я должен получить массив выходных параметров, т.е. длина массива 10 значений. Но. Я получаю 12. Причем первые 2 - содержат внутренние обращения запроса (оракловые обращения при выполнении процедуры).
Я бы не обратил на это внимание, но данная процедура работала с другой БД и выдавала правильные значения.
В чем собака порыта?