如何解决在perl脚本中使用输入参数和out光标调用存储过程
尝试在perl脚本中执行过程,过程->创建或替换
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,{ora_type => ORA_RSET}); $sth->execute; $sth->finish;
-
从游标中获取记录
while ($hashRef = $cursrecords->fetchrow_hashref) { foreach (keys %$hashRef) { print "hashref:$hashRef and $_ is $hashRef->{$_}\n"; } }
第3步未检索任何内容。 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;
解决方法
请尝试(如René Nyffenegger's collection)
my $sth = $dbh->prepare(
q{
DECLARE
curs sys_refcursor;
BEGIN
Getproc(:category,:curs);
END;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。