【发布时间】:2020-12-12 20:37:50
【问题描述】:
尝试在 perl 脚本中执行过程,Proceure ->创建或替换
PROCEDURE Getproc
(
v_catg IN CHAR DEFAULT NULL,
v_cursor OUT SYS_REFCURSOR
)
-
执行程序
my $sth = $dbh->prepare( q{ BEGIN Getproc(:category, :curs); END; } ); -
绑定 i/p 和光标
$sth->bind_param(":category", $category1); $sth->bind_param_inout(":curs", \$cursrecords, 0, {ora_type => ORA_RSET}); $sth->execute; $sth->finish; -
从游标中获取记录
while ($hashRef = $cursrecords->fetchrow_hashref) { foreach (keys %$hashRef) { print "hashref:$hashRef and $_ is $hashRef->{$_}\n"; } }
第三步是不检索任何东西。 curserecords=DBI::st=HASH(0x2371bd0)
这有哈希对象。有人可以帮我知道这里缺少什么。为什么我无法从存储在游标中的表中检索行?
程序参考
create or replace PROCEDURE GetProc
(
v_catg IN CHAR DEFAULT NULL,
v_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
IF ( v_catgIS NULL ) THEN
BEGIN
OPEN v_cursor FOR
SELECT EnvVar,
VALUE
FROM table;
END;
ELSE
BEGIN
OPEN v_cursor FOR
SELECT EnvVar ,
VALUE
FROM table
WHERE Category = v_catg ;
END;
END IF;
EXCEPTION
WHEN OTHERS THEN raise_application_error(-20002,SQLCODE||':'||SQLERRM);
END;
【问题讨论】:
-
@Francisco Zarabozo 你现在可以检查一下吗?我已经格式化代码并粘贴了
-
我没有办法对此进行测试,我没有 Oracle 数据库。我提供文档中的示例是为了帮助您,但目前我只能做到这些。
标签: oracle perl stored-procedures hash dbi