如何通过c或c++调用存储过程?

如何通过c或c++调用存储过程?,第1张

给个例子给你看返如下:

...

_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进程空间执行.

但外部程式必须是一桥芦岁个自生灭的程式(即没有消息循环、不需要与用户交哗桐互),否则将会进入死循环中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12411436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存