c程序该怎么样调用oracle存储过程并获取存储过程中的输出参数的值 5
有如下创建的存储过程:--创建查询学生信息的存储过程createorreplaceprocedurequery(out_nooutVARCHAR2,out_nameout...
有如下创建的存储过程:
--创建查询学生信息的存储过程
create or replace procedure query(out_no out VARCHAR2,out_name out varchar2,out_sex out VARCHAR2,out_age out VARCHAR2,out_dept out VARCHAR2) as
cursor youbiao IS select Sno,Sname,Ssex,Sage,Sdept from student ; --定义游标
begin
open youbiao ; --打开游标
LOOP --循环体
FETCH youbiao INTO out_no,out_name,out_sex,out_age,out_dept ; --推进游标
EXIT when youbiao%NOTFOUND ; --跳出循环条件
END LOOP ;
close youbiao;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
end query;
其中部分c程序如下:
//变量定义
char HSno[10];
char HSname[10];
char HSsex[3];
char HSage;
char HSdept[10];
//调用存储过程函数如下
int querystu_msg(void){
EXEC SQL call query(:HSno,:HSname,:HSsex,:HSage,:HSdept);
printf("%s %s %s %s %s \n",HSno,HSname,HSsex,HSage,HSdept);
}
存储过程编译过了没有错,但是c程序没办法获取当中的值并输出,而且一运行程序就出现这个
请问一下我错在哪里了?我应该怎么改正程序????谢谢!!! 展开
--创建查询学生信息的存储过程
create or replace procedure query(out_no out VARCHAR2,out_name out varchar2,out_sex out VARCHAR2,out_age out VARCHAR2,out_dept out VARCHAR2) as
cursor youbiao IS select Sno,Sname,Ssex,Sage,Sdept from student ; --定义游标
begin
open youbiao ; --打开游标
LOOP --循环体
FETCH youbiao INTO out_no,out_name,out_sex,out_age,out_dept ; --推进游标
EXIT when youbiao%NOTFOUND ; --跳出循环条件
END LOOP ;
close youbiao;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
end query;
其中部分c程序如下:
//变量定义
char HSno[10];
char HSname[10];
char HSsex[3];
char HSage;
char HSdept[10];
//调用存储过程函数如下
int querystu_msg(void){
EXEC SQL call query(:HSno,:HSname,:HSsex,:HSage,:HSdept);
printf("%s %s %s %s %s \n",HSno,HSname,HSsex,HSage,HSdept);
}
存储过程编译过了没有错,但是c程序没办法获取当中的值并输出,而且一运行程序就出现这个
请问一下我错在哪里了?我应该怎么改正程序????谢谢!!! 展开
1个回答
展开全部
我以前这样用pro*c 这样玩的,仅供参考
EXEC SQL EXECUTE
DECLARE
lsid varchar2(60);
lss_this_error_code number;
BEGIN
proctest(:ls_name,lsid); --ls_name 输入参数 lss_id 输出
:chId := lsid;-- lsid 输出返回给C变量chId
END;
END-EXEC;
EXEC SQL EXECUTE
DECLARE
lsid varchar2(60);
lss_this_error_code number;
BEGIN
proctest(:ls_name,lsid); --ls_name 输入参数 lss_id 输出
:chId := lsid;-- lsid 输出返回给C变量chId
END;
END-EXEC;
追问
这位大哥,不好意思,你弄错了吧,我问的不是这个意思!我问的是存储过程,c程序怎么调用存储过程获取输出参数发回给c程序输出!你能帮我解决吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询