存储过程的一个参数,返回一个字符串的问题? 调用一个存储过程,希望用它的一个参数返回一段字符串,该用什么数据类型,有这方面的例子吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用nvarchar类型CREATE PROCEDURE sp_test @ouChar NVARCHAR(64) OUTPUTAS SET @ouChar = 'skdfk'GO 那么存储过程中对应nvarchar类型的数据类型是什么?指定的接收长度为多少? 你是问调用时吗?如果是 vc 需要用 CComVariant 作为参数,vb 的话无需指定类别 (例子)VC 6 ADO 调用存储过程,带返回值,输出参数;_variant_t v1, v2,m_vReturnValue ;_ConnectionPtr pConnection;_CommandPtr pCommand = NULL;_ParameterPtr pResParam = NULL, m_vReturnParameterPtr, m_vOutputParameterPtr;pConnection.CreateInstance(__uuidof(Connection));pCommand.CreateInstance(__uuidof(Command));v1 = _T("test1");v2 = 1L;m_vReturnParameterPtr = pCommand->CreateParameter(_T("RETURN_VALUE"), adInteger, adParamReturnValue, 4, m_vReturnValue);pCommand->Parameters->Append(m_vReturnParameterPtr); m_vOutputParameterPtr = pCommand->CreateParameter(_T("@a"), adInteger, adParamInput, sizeof(TCHAR)*64 , v1);pCommand->Parameters->Append(m_vOutputParameterPtr); pResParam = pCommand->CreateParameter(_T("@b"), adWChar, adParamInputOutput, sizeof(long) , v2);pCommand->Parameters->Append(pResParam);pConnection->Open(_T("Provider=SQLOLEDB;SERVER=.;DATABASE=ResourcePlat;UID=DBuser;PWD=password"), _T(""), _T(""), m_eConnectOption); pCommand->ActiveConnection = pConnection;pCommand->CommandText = _bstr_t(_T("p_LogDebug"));pCommand->Execute( NULL, NULL, adCmdStoredProc);m_vReturnValue = m_vReturnParameterPtr->Value;v1 = m_vOutputParameterPtr->Value; //(例子)VC 6 ADO 调用存储过程,带返回值,输出参数;// 自己捕获异常_variant_t v1, v2,m_vReturnValue ;_ConnectionPtr pConnection;_CommandPtr pCommand = NULL;_ParameterPtr pResParam = NULL, m_vReturnParameterPtr, m_vOutputParameterPtr;pConnection.CreateInstance(__uuidof(Connection));pCommand.CreateInstance(__uuidof(Command));v1 = _T("test1");v2 = 1L;// 建立返回值的参数,好像必须放在第一个m_vReturnParameterPtr = pCommand->CreateParameter(_T("RETURN_VALUE"), adInteger, adParamReturnValue, 4, m_vReturnValue);pCommand->Parameters->Append(m_vReturnParameterPtr);// 建立一个输出参数m_vOutputParameterPtr = pCommand->CreateParameter(_T("@a"), adInteger, adParamInput, sizeof(TCHAR)*64 , v1);pCommand->Parameters->Append(m_vOutputParameterPtr);// 建立一个一般的参数pResParam = pCommand->CreateParameter(_T("@b"), adWChar, adParamInputOutput, sizeof(long) , v2);pCommand->Parameters->Append(pResParam);//连接数据库pConnection->Open(_T("Provider=SQLOLEDB;SERVER=.;DATABASE=ResourcePlat;UID=DBuser;PWD=password"), _T(""), _T(""), m_eConnectOption); pCommand->ActiveConnection = pConnection;pCommand->CommandText = _bstr_t(_T("p_LogDebug"));pCommand->Execute( NULL, NULL, adCmdStoredProc); //执行存储过程m_vReturnValue = m_vReturnParameterPtr->Value; // 获取返回值v1 = m_vOutputParameterPtr->Value; // 获取输出参数 VC如何检测电脑有没安装realplayer char* 如何转换转换 CString *? 请问如何设置CEditView的字体 UDP服务器监听问题!无法用WSAAsyncSelect绑定消息! 关于树形控件!!! 这样释放CArray占用的内存正确吗? 怎样处理static text 的单击的消息? 缶各位大牛请教:如何强制停止服务(service) 像这样的箭头图和颜色梯度图,有什么容易的办法实现吗? vc中如何在状态栏中画图标! 存储过程的一个古怪的问题 VC如何调用存储过程
CREATE PROCEDURE sp_test
@ouChar NVARCHAR(64) OUTPUT
AS
SET @ouChar = 'skdfk'
GO
指定的接收长度为多少?
_ConnectionPtr pConnection;
_CommandPtr pCommand = NULL;
_ParameterPtr pResParam = NULL, m_vReturnParameterPtr, m_vOutputParameterPtr;pConnection.CreateInstance(__uuidof(Connection));pCommand.CreateInstance(__uuidof(Command));
v1 = _T("test1");
v2 = 1L;m_vReturnParameterPtr = pCommand->CreateParameter(_T("RETURN_VALUE"), adInteger, adParamReturnValue, 4, m_vReturnValue);
pCommand->Parameters->Append(m_vReturnParameterPtr);
m_vOutputParameterPtr = pCommand->CreateParameter(_T("@a"), adInteger, adParamInput, sizeof(TCHAR)*64 , v1);
pCommand->Parameters->Append(m_vOutputParameterPtr);
pResParam = pCommand->CreateParameter(_T("@b"), adWChar, adParamInputOutput, sizeof(long) , v2);
pCommand->Parameters->Append(pResParam);pConnection->Open(_T("Provider=SQLOLEDB;SERVER=.;DATABASE=ResourcePlat;UID=DBuser;PWD=password"), _T(""), _T(""), m_eConnectOption);
pCommand->ActiveConnection = pConnection;
pCommand->CommandText = _bstr_t(_T("p_LogDebug"));
pCommand->Execute( NULL, NULL, adCmdStoredProc);m_vReturnValue = m_vReturnParameterPtr->Value;
v1 = m_vOutputParameterPtr->Value;
// 自己捕获异常_variant_t v1, v2,m_vReturnValue ;
_ConnectionPtr pConnection;
_CommandPtr pCommand = NULL;
_ParameterPtr pResParam = NULL, m_vReturnParameterPtr, m_vOutputParameterPtr;pConnection.CreateInstance(__uuidof(Connection));
pCommand.CreateInstance(__uuidof(Command));
v1 = _T("test1");
v2 = 1L;// 建立返回值的参数,好像必须放在第一个
m_vReturnParameterPtr = pCommand->CreateParameter(_T("RETURN_VALUE"), adInteger, adParamReturnValue, 4, m_vReturnValue);
pCommand->Parameters->Append(m_vReturnParameterPtr);
// 建立一个输出参数
m_vOutputParameterPtr = pCommand->CreateParameter(_T("@a"), adInteger, adParamInput, sizeof(TCHAR)*64 , v1);
pCommand->Parameters->Append(m_vOutputParameterPtr);
// 建立一个一般的参数
pResParam = pCommand->CreateParameter(_T("@b"), adWChar, adParamInputOutput, sizeof(long) , v2);
pCommand->Parameters->Append(pResParam);
//连接数据库
pConnection->Open(_T("Provider=SQLOLEDB;SERVER=.;DATABASE=ResourcePlat;UID=DBuser;PWD=password"), _T(""), _T(""), m_eConnectOption);
pCommand->ActiveConnection = pConnection;
pCommand->CommandText = _bstr_t(_T("p_LogDebug"));
pCommand->Execute( NULL, NULL, adCmdStoredProc); //执行存储过程m_vReturnValue = m_vReturnParameterPtr->Value; // 获取返回值
v1 = m_vOutputParameterPtr->Value; // 获取输出参数