gpt4 book ai didi

perl - 在 perl 中将任意数量的参数传递给 Oracle 函数

转载 作者:行者123 更新时间:2023-12-01 09:39:37 25 4
gpt4 key购买 nike

获取一段现有的 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();

如果我现在想扩展此功能以允许调用任何存储过程(我想将名称作为参数传递给 perl 脚本)。

那么是否可以将任意数量的参数传递给函数调用?

Perl 绝不是我的强项,所以我不知道这是一个多么困难的问题。

我认为这里出现问题的部分是实际的 SQL;

BEGIN
:result := myStoredProc(value1 => :Param1, value2 => :Param2);
END;

我不太确定如何调整这段代码以获取任意数量的参数。

如果有人对此有任何经验,我将非常感谢您提供的任何帮助。

谢谢

最佳答案

这样的事情会起作用:

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;
}

关于perl - 在 perl 中将任意数量的参数传递给 Oracle 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com