...
_CommandPtrm_cmdptr
m_cmdptr.CreateInstance(__uuidof( Command ) )
_ParameterPtr inParam2=NULL
_ParameterPtr inParam3=NULL
_ParameterPtr inParam4=NULL
_ParameterPtr outParam1=NULL
_ParameterPtr outParam2=NULL
_ParameterPtr outParam3=NULL
inParam2.CreateInstance(__uuidof(Parameter))
inParam3.CreateInstance(__uuidof(Parameter))
inParam4.CreateInstance(__uuidof(Parameter))
outParam1.CreateInstance(__uuidof(Parameter))
outParam2.CreateInstance(__uuidof(Parameter))
outParam3.CreateInstance(__uuidof(Parameter))
m_cmdptr->ActiveConnection=m_pConnection
m_cmdptr->CommandType=adCmdStoredProc
m_cmdptr->CommandText=_bstr_t("proc_XXX")//存储过程的名称
//闭唯输入参数
inParam2=m_cmdptr->CreateParameter(_bstr_t("@P1"),adVarChar,adParamInput,32,_bstr_t(P1))
m_cmdptr->Parameters->Append(inParam2)
inParam3=m_cmdptr->CreateParameter(_bstr_t("@P2"),adVarChar,adParamInput,20,_bstr_t(P2))
m_cmdptr->Parameters->Append(inParam3)
//输出参数
outParam1=m_cmdptr->CreateParameter("@P4",adInteger,adParamOutput,sizeof(int))
m_cmdptr->轿世培Parameters->Append(outParam1)
outParam2=m_cmdptr->CreateParameter("@P5",adInteger,adParamOutput,sizeof(int))
m_cmdptr->Parameters->Append(outParam2)
outParam3=m_cmdptr->CreateParameter(_bstr_t("@P6"),adVarChar,adParamOutput,20,_bstr_t(P6))
m_cmdptr->Parameters->Append(outParam3)
//执行
m_cmdptr->Execute(NULL,NULL,adCmdStoredProc)
//取返回值
long p1=m_cmdptr->Parameters->GetItem("@P4")->Value
long p2=m_cmdptr->Parameters->GetItem("@P5")->Value
VARIANT vtP6 =m_cmdptr->Parameters->GetItem("@P6")->Value
if (vtP6.vt != VT_NULL)
strcpy(tp,(_bstr_t)vtP6)
m_cmdptr.Detach
--调用外部程序或者命令exec xp_cmdshell 'dir c:\'
注意不能调用需要用户干预才能继续运行的程序.
使用Sqlserver的xp_CmdShell扩展存储过程的一个注意:
这个存储过程只能执行Dos控制台程序,其他的Exe程敏睁序不能在Sqlserver进程空间执行.
但外部程式必须是一桥芦岁个自生灭的程式(即没有消息循环、不需要与用户交哗桐互),否则将会进入死循环中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)