问题是这样的:
使用ORACLE数据库,建了一个包mypak:
create or replace package mypak is
type UserCursorType is ref cursor;
procedure get_data(mycursor in out UserCursorType);
end mypak;create or replace package body mypak is
procedure get_data(mycursor in out UserCursorType) is
begin
OPEN mycursor FOR SELECT cname FROM infotab;
end;
end mypak;
用PRO*C/C++编了个测试小程序:
//测试游标操作:
void get_datapro()
{ char cname[6];
sql_cursor data_sursor;
EXEC SQL ALLOCATE :data_sursor;
EXEC SQL call mypak.get_data(:data_sursor);
while(1){
EXEC SQL FETCH :data_sursor INTO :cname;
printf("cname=%S*\n",cname); }
EXEC SQL CLOSE :data_sursor;
EXEC SQL FREE :data_sursor;}
测试结果是游标data_sursor变量没有获得存储过程的返回结果。
请各位高手帮忙解决在PRO*C/C++下如何利用ORACLE库的存储过程或函数返回查询的多行数据操作(使用游标)?
使用ORACLE数据库,建了一个包mypak:
create or replace package mypak is
type UserCursorType is ref cursor;
procedure get_data(mycursor in out UserCursorType);
end mypak;create or replace package body mypak is
procedure get_data(mycursor in out UserCursorType) is
begin
OPEN mycursor FOR SELECT cname FROM infotab;
end;
end mypak;
用PRO*C/C++编了个测试小程序:
//测试游标操作:
void get_datapro()
{ char cname[6];
sql_cursor data_sursor;
EXEC SQL ALLOCATE :data_sursor;
EXEC SQL call mypak.get_data(:data_sursor);
while(1){
EXEC SQL FETCH :data_sursor INTO :cname;
printf("cname=%S*\n",cname); }
EXEC SQL CLOSE :data_sursor;
EXEC SQL FREE :data_sursor;}
测试结果是游标data_sursor变量没有获得存储过程的返回结果。
请各位高手帮忙解决在PRO*C/C++下如何利用ORACLE库的存储过程或函数返回查询的多行数据操作(使用游标)?
我用的ORACLE9I VC6.0 。
问题是:
1.我在PRO*C 的GUI里设置了相关的参数和路径。PRO*C 代码能成功通过。在VC里生成目标代码出错。VC里我是加载了ORACLE库函数的。我的问题是ORACLE 是不是要设置相关的东西。以便PRO*C 调用。
2.你的问题可以看一看我发的帖子。一起想想怎样实现。一个帖友说他用 SYS_REFCURSOR
简单地说,主要就是设置VC的开发环境:
1)修改ORACLE数据库安装目录下的C:\Oracle\product\10.1.0\Db_1\precomp\admini\pcscfg.cfg文件:例:
define=(WIN32_LEAN_AND_MEAN)
parse=full
include=C:\Oracle\product\10.1.0\Db_1\precomp\public
include=C:\Oracle\product\10.1.0\Db_1\OCI\include
include=C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
2)在VC中指定ORACLE 的头文件路径,例C:\ORACLE\PRODUCT\10.1.0\DB_1\PRECOMP\PUBLIC
3)在VC中指定ORACLE 的库文件路径,例C:\ORACLE\PRODUCT\10.1.0\DB_1\PRECOMP\LIB
4)在VC中指定ORACLE 的库文件,例oraSQL10.LIB。(oracle10g)