使用现有的perl代码调用具有两个参数的Oracle函数;
my $func = $dbh->prepare
(q
{
BEGIN
:result := myStoredProc(value1 => :Param1, value2 => :Param2);
END;
}
);
$func->bind_param(":Param1", $opt_a);
$func->bind_param(":Param2", $opt_b);
$func->bind_param_inout(":result", \$result, 20);
$func->execute();
Run Code Online (Sandbox Code Playgroud)
如果我现在想要扩展此功能以允许调用任何存储过程(名称作为参数传递给我认为的perl脚本).
那么可以将任意数量的参数传递给函数调用吗?
Perl绝不是我的强项,所以我不知道这个问题有多难.
我认为这里提出问题的部分是实际的SQL;
BEGIN
:result := myStoredProc(value1 => :Param1, value2 => :Param2);
END;
Run Code Online (Sandbox Code Playgroud)
我不确定这个代码如何适应任何数量的参数.
如果有人有这方面的经验,我真的很感激你能给予的任何帮助.
谢谢
像这样的东西会起作用:
sub callStoredFunction
{
my ($funcName, @parameters) = @_;
my $paramStr = join(', ',
map { "value$_ => Param$_" }
(1 .. scalar(@parameters));
my $func = $dbh->prepare(sprintf("\n{\nBEGIN\n:result := $funcName( %s );\nEND;", $paramStr));
for my $paramNum (1 .. scalar(@parameters))
{
$func->bind_param(":Param${paramNum}", $parameters[$paramNum]);
}
my $result;
$func->bind_param_inout(":result", \$result, 20);
$func->execute();
return $result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |