请教:
最近跟别的系统做接口.
对方在他们的数据库上开发了一个返回游标的存储过程.
并给我们分配了用户访问.
单独访问可以调用. 我想把他们的访问过程封装到我们的存储过程中.(建立dblink访问)
封装的程序可以执行, 但无法获取游标和数据.代码如下:
create or replace package PAK_CURSOR_TEST is -- Author : ADMINISTRATOR
-- Created : 2008-6-25 15:35:16
-- Purpose :
-- Public type declarations
type refcurosr is ref cursor;
procedure PR_TEST_CURSOR(P_INDATE VARCHAR2, rc_zhaozhenlong out refcurosr);
end PAK_CURSOR_TEST;
create or replace package body PAK_CURSOR_TEST is
PROCEDURE PR_TEST_CURSOR (P_INDATE VARCHAR2, rc_zhaozhenlong out refcurosr) is
myresult varchar2(300);
begin pkg_query.pro_call_record@dblink ( '13300000000','20080501000000','20080510235959',myresult,rc_zhaozhenlong);
end;
end PAK_CURSOR_TEST;调用代码:
create or replace procedure p_testopenrmcursor is
type type_cur is ref cursor;
cur_out type_cur;CITY_NAME varchar2(50);
ROAM_TYP varchar2(50);
CALL_TYP varchar2(50);
OPPOSE_NUMBER varchar2(50);
CALL_TIME varchar2(50);
CALL_DURATION varchar2(50);
BASE_FEE number(10,2);
LAND varchar2(50);
begin
GDJF.PAK_CURSOR_TEST.PR_TEST_CURSOR('GZ',cur_out);
-- open cur_out;
Loop
Fetch cur_out
Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND;
Exit When cur_out%Notfound;
dbms_output.put_line('a:'||CITY_NAME);
end loop;
end p_testopenrmcursor;执行过程
SQL> exec p_testopenrmcursor;begin p_testopenrmcursor; end;ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at "GDJF.P_TESTOPENRMCURSOR", line 18
封装的目的是为了让web前台只调用一个数据库的内容.
但封装过程可以执行, 却不能获取到游标再获取数据. 查看了网上的其他资料, 也只是到了执行这一步, 没有获取游标数据.
请教各位有什么别的好办法么?
最近跟别的系统做接口.
对方在他们的数据库上开发了一个返回游标的存储过程.
并给我们分配了用户访问.
单独访问可以调用. 我想把他们的访问过程封装到我们的存储过程中.(建立dblink访问)
封装的程序可以执行, 但无法获取游标和数据.代码如下:
create or replace package PAK_CURSOR_TEST is -- Author : ADMINISTRATOR
-- Created : 2008-6-25 15:35:16
-- Purpose :
-- Public type declarations
type refcurosr is ref cursor;
procedure PR_TEST_CURSOR(P_INDATE VARCHAR2, rc_zhaozhenlong out refcurosr);
end PAK_CURSOR_TEST;
create or replace package body PAK_CURSOR_TEST is
PROCEDURE PR_TEST_CURSOR (P_INDATE VARCHAR2, rc_zhaozhenlong out refcurosr) is
myresult varchar2(300);
begin pkg_query.pro_call_record@dblink ( '13300000000','20080501000000','20080510235959',myresult,rc_zhaozhenlong);
end;
end PAK_CURSOR_TEST;调用代码:
create or replace procedure p_testopenrmcursor is
type type_cur is ref cursor;
cur_out type_cur;CITY_NAME varchar2(50);
ROAM_TYP varchar2(50);
CALL_TYP varchar2(50);
OPPOSE_NUMBER varchar2(50);
CALL_TIME varchar2(50);
CALL_DURATION varchar2(50);
BASE_FEE number(10,2);
LAND varchar2(50);
begin
GDJF.PAK_CURSOR_TEST.PR_TEST_CURSOR('GZ',cur_out);
-- open cur_out;
Loop
Fetch cur_out
Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND;
Exit When cur_out%Notfound;
dbms_output.put_line('a:'||CITY_NAME);
end loop;
end p_testopenrmcursor;执行过程
SQL> exec p_testopenrmcursor;begin p_testopenrmcursor; end;ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at "GDJF.P_TESTOPENRMCURSOR", line 18
封装的目的是为了让web前台只调用一个数据库的内容.
但封装过程可以执行, 却不能获取到游标再获取数据. 查看了网上的其他资料, 也只是到了执行这一步, 没有获取游标数据.
请教各位有什么别的好办法么?
解决方案 »
- imp导入表出现问题,必须表不存在的情况下才成功。如果表存在就报错了
- Oracle修改字段类型,把varchar2类型变成date类型 表已经有数据
- 怎么实现这样的写法?
- ora-01722无效数字
- 行转列的查询语句!
- Oracle数据库sql语句
- 不会做了,请大家帮我做!
- 这条update语句总是报错,错误信息是:Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC driver for Oracle]
- 这个查询怎么写?
- 在SQL*Plus中关于使用变量为输出文件名的问题
- 求sql语句
- 请教下大家‘在线考试系统’表的设计
Fetch cur_out
Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND;
Exit When cur_out%Notfound;
dbms_output.put_line('a:' ¦ ¦CITY_NAME);
end loop; 这里调了,大锅
Fetch cur_out
Into CITY_NAME, ROAM_TYP,CALL_TYP,OPPOSE_NUMBER,CALL_TIME,CALL_DURATION,BASE_FEE,LAND; 从错误本身看, 就是变量和对方的数据类型不匹配的原因么? 应该不是, 我核对过对方的数据的.
http://blog.csdn.net/CathySun118/archive/2008/06/15/2550196.aspx