类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
本人在oracle数据库中定义了一个pb_test的存储过程,具体如下所示:
create or replace procedure pb_test(
jiaokudan_id out VARCHAR2,
zzd_id out varchar2,
importer in varchar2
)
as
begin
select JIAOKUDAN_ID,ZZD_ID
into jiaokudan_id,zzd_id
FROM MIS_MAOPEI_INPUT
WHERE IMPORTER = importer;
end ;
运行无错误
然后在pb的程序中调用上面的存储过程的程序如下所示:
string importer
string jiaokudan_id
string zzd_id
DECLARE pb PROCEDURE FOR PB_TEST
using sqlca;
EXECUTE pb(:importer) ;
fetch pb into :jiaokudan_id,:zzd_id;
if sqlca.sqlcode<>0 then
messagebox("sqlca.sqlerrtext",sqlca.sqlerrtext)
else
messagebox("结果","jiaokudan_id is:"+jiaokudan_id+"zzd_id is:"+zzd_id)
end if
结果出来的提示是"cursor is not open",无法出现应该的结果
之后,我把上面的ORACLE存储过程改了一下,不用in参数,直接用一个具体的值代替,具体如下所示:
create or replace procedure pb_test(
jiaokudan_id out VARCHAR2,
zzd_id out varchar2
)
AS
begin
select JIAOKUDAN_ID,ZZD_ID
into jiaokudan_id,zzd_id
FROM MIS_MAOPEI_INPUT
WHERE IMPORTER = aaa;
end ;
然后在pb的程序中调用上面的存储过程的程序如下所示:
string importer
string jiaokudan_id
DECLARE pb PROCEDURE FOR PB_TEST
using sqlca;
EXECUTE pb ;
fetch pb into :jiaokudan_id,:zzd_id;
if sqlca.sqlcode<>0 then
messagebox("sqlca.sqlerrtext",sqlca.sqlerrtext)
else
messagebox("结果","jiaokudan_id is:"+jiaokudan_id+"zzd_id is:"+zzd_id)
end if
string zzd_id
这次倒是能够正确实现,不知前面的那次带参数的错在何处,请各位大侠帮助,多谢!
网友回答:
应该是select JIAOKUDAN_ID,ZZD_ID
into jiaokudan_id,zzd_id
FROM MIS_MAOPEI_INPUT
WHERE IMPORTER = importer;
不止一行纪录