========================
table_test表的结构如下:
IDx int
aaa nvarchar(50)
bbb nvarchar(50)表中数据如下:
IDx aaa bbb
1 a1 b1
2 a2 b2========================
存储过程如下:
@ID1 int = 1,
@ID2 int = 2 ASBEGIN
declare @select1 table
(a nvarchar(50),b nvarchar(50) );
insert into @select1(a,b)
select aaa,bbb from cletgem_test;
select * from @select1;END
==============================
ADO调用这个存储过程的代码如下: inline void TESTHR(HRESULT x) { if FAILED(x) _com_issue_error(x);} _RecordsetPtr pRst = NULL;
_CommandPtr pCmd = NULL;
_ParameterPtr pPrm1 = NULL;
_ParameterPtr pPrm2 = NULL;
_ConnectionPtr pConn = NULL; HRESULT hr = S_OK;
VARIANT vtID1;
VARIANT vtID2;
vtID1.vt = VT_I4;
vtID2.vt = VT_I4;
vtID1.lVal = 1;
vtID2.lVal = 2; //通过udl文件文件连接数据库
CString strConnect = _T("File Name=");
strConnect += mdbName;
try
{
TESTHR(pConn.CreateInstance(__uuidof(Connection)));
hr = pConn->Open(_bstr_t(LPCTSTR(strConnect)), "", "", adConnectUnspecified);
pConn->CursorLocation = adUseClient; TESTHR(pCmd.CreateInstance(__uuidof(Command)));
pCmd->CommandText = strProc;
pCmd->CommandType = adCmdStoredProc;
pPrm1 = pCmd->CreateParameter("@ID1",adInteger,adParamInput,sizeof(long),vtID1);
pPrm2 = pCmd->CreateParameter("@ID2",adInteger,adParamInput,sizeof(long),vtID2);

pCmd->Parameters->Append(pPrm1);
pCmd->Parameters->Append(pPrm2);

pPrm1->Value = vtID1;
pPrm2->Value = vtID2; pCmd->ActiveConnection = pConn; //错误发生处
pRst = pCmd->Execute(NULL,NULL,adCmdStoredProc); if( adStateOpen == pCmd->State )
vtID2 = vtID2;//错误发生时该条件不能成立
pRst->MoveFirst();

return TRUE;
} catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescritpion(e.Description());
return FALSE;
}
}=================================================================问题:
当调用不含表变量的存储过程时,这段代码工作能够将结果取出,但是,当存储过程中包含表变量(比如上示)时,就不正常了=================================================================为什么呢?怎么办呢?项目被这个问题卡住,咳不出来又咽不下去,快憋死了