关于存储过程返回游标的错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于存储过程返回游标的错误相关的知识,希望对你有一定的参考价值。
我现有有2个存储过程
第一个是:
CREATE OR REPLACE PROCEDURE FILTER_USERS_NOTIME
(
fun_cmd in varchar2, /*ÃüÁî¹Ø¼ü×Ö*/
fun_cmdId in varchar2, /*ÃüÁîÁ÷Ë®ºÅ*/
fun_hostId in varchar2, /*Ö÷ »ú ºÅ*/
fun_user in varchar2, /*Óà »§*/
fun_degree in varchar2 /*×Üµç ¶ÈÊý*/
)
AS
fun_tableName varchar2(20);
fun_condition varchar2(20);
fun_CURSOR FILTER_DATA.FD_CURSOR;
begin
if FILTER_USERS(fun_user)=false then
select tableName,condition into fun_tableName,fun_condition from userfilter where command=fun_cmd and hostid=fun_hostId and commandId=fun_cmdId;
FILTER_DATA_PROCEDURE(fun_tableName,fun_condition,fun_CURSOR);
if fun_CURSOR%FOUND then
DBMS_OUTPUT.PUT_LINE('ÓαêÒÔ´ò¿ª');
else
DBMS_OUTPUT.PUT_LINE('Óαêδ´ò¿ª');
end if;
end if;
end;
这个存储过程将调用另外一个存储过程返回游标
create or replace procedure FILTER_DATA_PROCEDURE(
fdp_tableName in varchar2,
fdp_condition in varchar2,
fdp_CURSOR out FILTER_DATA.FD_CURSOR
)
as
fdp_sql varchar2(100);
begin
fdp_sql:='select * from ' || fdp_tableName || fdp_condition;
open fdp_CURSOR for fdp_sql;
end;
还有个包头定义的游标
CREATE OR REPLACE PACKAGE FILTER_DATA
AS
TYPE FD_CURSOR IS REF CURSOR;
END
然后执行的时候抱个什么SQL命令未正确结束·
希望高手赐教啊·
关于存储过程返回游标的处理
我现在有2个存储过程
第一个是要获得第二个返回的游标
但是获得之后应该怎么处理呢?
CREATE OR REPLACE PROCEDURE FILTER_USERS_NOTIME
(
fun_cmd in varchar2, /*ÃüÁî¹Ø¼ü×Ö*/
fun_cmdId in varchar2, /*ÃüÁîÁ÷Ë®ºÅ*/
fun_hostId in varchar2, /*Ö÷ »ú ºÅ*/
fun_user in varchar2, /*Óà »§*/
fun_degree in varchar2 /*×Üµç ¶ÈÊý*/
)
AS
fun_tableName varchar2(20);
fun_condition varchar2(20);
fun_CURSOR sys_refcursor;
begin
if FILTER_USERS(fun_user)=false then
select tableName,condition into fun_tableName,fun_condition from userfilter where command=fun_cmd and hostid=fun_hostId and commandId=fun_cmdId;
FILTER_DATA(fun_tableName,fun_condition,fun_CURSOR);
end if;
end;
然后调用第二个存储过程返回了一个游标
create or replace procedure FILTER_DATA(
fdp_tableName in varchar2,
fdp_condition in varchar2,
fdp_CURSOR out sys_refcursor
)
as
fdp_sql varchar2(100);
begin
fdp_sql:='select * from ' || fdp_tableName || ' ' || fdp_condition;
open fdp_CURSOR for fdp_sql;
end;
第一个存储过程得到fun_CURSOR这个游标后该怎么处理啊·
我想得到里面的结果集
呵呵,希望能有帮助,^_^
以上是关于关于存储过程返回游标的错误的主要内容,如果未能解决你的问题,请参考以下文章