存储过程如下:
create procedure mytest
@userid varchar(20),
@userpw varchar(20)
as
set nocount on select @userid,@userpw set nocount off
go其中VC执行存储过程代码如下:
/////////////按存储过程参数顺序传入////////////////////
pParaReturn.CreateInstance("adodb.parameter");
pParaReturn->Name="Return_Value";
pParaReturn->Type=adInteger;
pParaReturn->Size=sizeof(int);
pParaReturn->Direction=adParamReturnValue;
pCmd->Parameters->Append(pParaReturn);/////////代码1////////////
pParaUserid.CreateInstance("adodb.parameter");
pParaUserid->Name="@userid";
pParaUserid->Type=adVarChar;
pParaUserid->Size=200;
pParaUserid->Direction=adParamInput;
pCmd->Parameters->Append(pParaUserid);
pParaUserid->Value=_variant_t(StrUserid);
///////////////////////////////////代码2////////////
pParaUserpw.CreateInstance("adodb.parameter");
pParaUserpw->Name="@userpw";
pParaUserpw->Type=adVarChar;
pParaUserpw->Size=200;
pParaUserpw->Direction=adParamInput;
pCmd->Parameters->Append(pParaUserpw);
pParaUserpw->Value=_variant_t(StrUserpw);
/////////////////////////pCmd->ActiveConnection=m_Cn;
pCmd->CommandType=adCmdStoredProc;
pCmd->CommandText=(_bstr_t)StrFuncName; //执行存储过程名我传入的参数值:StrUserid="userid";StrUserpw="userpw";
返回的集内容为:userid userpw但如果我把代码1和代码2的位置互换为:
/////////代码2////////////
pParaUserpw.CreateInstance("adodb.parameter");
pParaUserpw->Name="@userpw";
pParaUserpw->Type=adVarChar;
pParaUserpw->Size=200;
pParaUserpw->Direction=adParamInput;
pCmd->Parameters->Append(pParaUserpw);
pParaUserpw->Value=_variant_t(StrUserpw);
//////////////////////////////////代码1////////////
pParaUserid.CreateInstance("adodb.parameter");
pParaUserid->Name="@userid";
pParaUserid->Type=adVarChar;
pParaUserid->Size=200;
pParaUserid->Direction=adParamInput;
pCmd->Parameters->Append(pParaUserid);
pParaUserid->Value=_variant_t(StrUserid);
//////////////////////////pCmd->ActiveConnection=m_Cn;
pCmd->CommandType=adCmdStoredProc;
pCmd->CommandText=(_bstr_t)StrFuncName; //执行存储过程名传入的参数值:StrUserid="userid";StrUserpw="userpw";
返回的集内容为:userpw userid提问:
为什么ADO执行存储过程不能根据存储过程参数名来配对呢?
即parameter->name为userid则把值传到@userid
parameter->name为userpw则把值传到@userpw是不是有办法解决这个问题。
谢谢