我在VC中调用下面的存储过程,想获取输出值,但是获取不了,
1\如果把EXEC master.dbo.xp_cmdshell那一行注释掉就可以获取输出值,
2\或在查询分析器中执行也可以获取输出值
请各位高手帮忙看一看
CREATE procedure dbo.sp_returndate
@res char(8) output
as
begin
EXEC master.dbo.xp_cmdshell 'dtsrun /S127.0.0.1 /Usa /P /Nmy_work'
select @res=convert(char(8),max(data_date),112) from log where status='success'
end
GO
CString okdate;//用于得到存储过程返回的日期
_ConnectionPtr m_pConnection;
HRESULT hr;
hr=m_pConnection.CreateInstance(__uuidof(Connection));
CString tmpconn;
_bstr_t connstr;
tmpconn.Format("Provider=SQLOLEDB;driver=SQL Server;SERVER=%s;DATABASE=cas_db;UID=sa;PWD=%s;",g_sqlip,m_sqlpasswd);
connstr=_bstr_t(tmpconn);
m_pConnection->Open(connstr,"","",-1);
_CommandPtr m_pCommand;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
//执行存储过程(存储过程中调用DTS包)
_variant_t vvar1;
vvar1 = _variant_t(_bstr_t(okdate));
_ParameterPtr mp_var1;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var1 = m_pCommand -> CreateParameter("res",adVarChar,adParamOutput,8,vvar1);
m_pCommand->Parameters->Append(mp_var1);
m_pCommand->Parameters->GetItem("res")->Value=(_bstr_t)okdate;
m_pCommand->Parameters->Refresh();
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->CommandText=_bstr_t("sp_resokdate");
m_pCommand->Execute(NULL,NULL,adCmdStoredProc);//执行存储过程
okdate=(char*)(_bstr_t)m_pCommand->Parameters->GetItem("res")->GetValue(); //获取输出值
AfxMessageBox(okdate)
1\如果把EXEC master.dbo.xp_cmdshell那一行注释掉就可以获取输出值,
2\或在查询分析器中执行也可以获取输出值
请各位高手帮忙看一看
CREATE procedure dbo.sp_returndate
@res char(8) output
as
begin
EXEC master.dbo.xp_cmdshell 'dtsrun /S127.0.0.1 /Usa /P /Nmy_work'
select @res=convert(char(8),max(data_date),112) from log where status='success'
end
GO
CString okdate;//用于得到存储过程返回的日期
_ConnectionPtr m_pConnection;
HRESULT hr;
hr=m_pConnection.CreateInstance(__uuidof(Connection));
CString tmpconn;
_bstr_t connstr;
tmpconn.Format("Provider=SQLOLEDB;driver=SQL Server;SERVER=%s;DATABASE=cas_db;UID=sa;PWD=%s;",g_sqlip,m_sqlpasswd);
connstr=_bstr_t(tmpconn);
m_pConnection->Open(connstr,"","",-1);
_CommandPtr m_pCommand;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;
//执行存储过程(存储过程中调用DTS包)
_variant_t vvar1;
vvar1 = _variant_t(_bstr_t(okdate));
_ParameterPtr mp_var1;
mp_var1.CreateInstance(__uuidof(Parameter));
mp_var1 = m_pCommand -> CreateParameter("res",adVarChar,adParamOutput,8,vvar1);
m_pCommand->Parameters->Append(mp_var1);
m_pCommand->Parameters->GetItem("res")->Value=(_bstr_t)okdate;
m_pCommand->Parameters->Refresh();
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->CommandText=_bstr_t("sp_resokdate");
m_pCommand->Execute(NULL,NULL,adCmdStoredProc);//执行存储过程
okdate=(char*)(_bstr_t)m_pCommand->Parameters->GetItem("res")->GetValue(); //获取输出值
AfxMessageBox(okdate)
@res char(8) output
as
begin
set nocount on
EXEC master.dbo.xp_cmdshell 'dtsrun /S127.0.0.1 /Usa /P /Nmy_work'
set nocount off
select @res=convert(char(8),max(data_date),112) from log where status='success'
end
GO
EXEC master.dbo.xp_cmdshell 'dtsrun /S127.0.0.1 /Usa /P /Nmy_work'
set nocount off