存储过程: CREATE PROCEDURE dbo.ccgc(@aa varchar(8),@bb varchar(8),@c integer,@dd
存储过程:
CREATE PROCEDURE dbo.ccgc(@aa varchar(8),@bb varchar(8),@c integer,@dd varchar(8),@return integer output) AS
begin
if @cc='1'
update form1 set id='1' where form1_aa=@aa
else
update form1 set id='0' where form1_aa=@aa
select @return = 2
return 3
end
程序:
CAdoCommand adoCmd1(&adoCn,"ccgc");
adoCmd1.GetParameters()->Refresh(); //传入参数
adoCmd1.GetParameter(1)->Value =(_variant_t)(aa) ;
adoCmd1.GetParameter(2)->Value = (_variant_t)bb;
adoCmd1.GetParameter(3)->Value = (long)c;
adoCmd1.GetParameter(4)->Value = (_variant_t)dd;
_RecordsetPtr pAdoRsMat1= NULL;
pAdoRsMat1 = adoCmd1.Execute(adCmdStoredProc);
if(pAdoRsMat1 == NULL)
return ;
_variant_t VretValR, VretVal ;
int retVal = 0;
int retValR=0;
VretValR=adoCmd1.GetValue(long(0));
retValR=VretValR.lVal; //返回值
VretVal=adoCmd1.GetValue(long(5));
retVal=VretVal.lVal; //返回值
程序无法读取到存储过程的返回值,但是如果存储过程直接做返回即改成:
begin
if @cc='1'
select @return = 2
return 3
end
则可以读取到返回值,究竟怎么回事呢????