读书人

存储过程解决思路

发布时间: 2012-02-08 19:52:21 作者: rapoo

存储过程
我对存储过程不太懂,想请大家看看下面的strSql.Format(....)里面的存储过程错在哪里,SQL 语句是没有问题的,但按下面的写法,到达m_shu-> Open(...)时就通不过了。请求大家给予帮助。谢谢。

CString strSql ;

strSql.Format( "declare @sql varchar(400) set @sql= 'SELECT DeviceID AS id, DevicePeriod AS dp, CarCard AS card FROM DeviceID WHERE (DeviceID IN(SELECT DeviceID FROM Map WHERE '+ @csact+ '=TRUE )) ' execute(@sql) ");

m_shu-> Open(_bstr_t(strSql),_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);


这其中上面是两个表:
map 表
字段: DeviceID A1 A2

DeviceID表
字段:DeviceID DevicePeriod CarCard

csact是如下的定义,它是代码map表中的字段A1、A2中的某一个的变量
CString csact;
m_comboaccount.GetLBText(actindex,csact);



[解决办法]
这个不算是存储过程,只是一个带参数的批sql语句
如果你确定你的批sql语句没有错


if(FAILED(::CoInitialize(NULL)))
return;
try
{
_ConnectionPtr pConn = NULL ;
_RecordsetPtr pRs = NULL ;
_RecordsetPtr pRs2 = NULL ;
_CommandPtr comm = NULL ;
_ParameterPtr param =NULL ;

HRESULT hr = S_OK;

_bstr_t strCnn( "Driver={SQL Server};Server=(local);Uid=sa;Pwd=;DataBase=test ");

pConn.CreateInstance(__uuidof(Connection));
pConn-> CursorLocation =adUseClient;
pConn-> ConnectionTimeout =60;
pConn-> Open (_bstr_t(strCnn),_bstr_t( " "),_bstr_t( " "),adModeUnknown);

comm.CreateInstance(__uuidof(Command));
param.CreateInstance(__uuidof(Parameter));
//pRs.CreateInstance(__uuidof(Recordset));

comm-> ActiveConnection=pConn;
comm-> CommandType=adCmdStoredProc;
comm-> CommandText= "execute(?) ";//这个问号是重点,参数化批sql语句的方法

_bstr_t sqlparam( "SELECT DeviceID AS id, DevicePeriod AS dp, CarCard AS card FROM DeviceID WHERE (DeviceID IN(SELECT DeviceID FROM Map WHERE '+ @csact+ '=TRUE )) ");

param = comm-> CreateParameter ( "@sql ",adVarChar,adParamInput,400,sqlparam);
comm-> Parameters-> Append(param);

comm-> Execute(NULL,NULL,adCmdText);
if (pConn)
if (pConn-> State == adStateOpen)
pConn-> Close();
}
catch (_com_error pCome)
{
TRACE( "Error info: %s \n ", (LPCTSTR)(_bstr_t)(pCome.Description()));
TRACE( "Error info: %s \n ", (pCome.ErrorMessage()));

}
::CoUninitialize();

读书人网 >VC/MFC

热点推荐