调用一个存储过程,希望用它的一个参数返回一段字符串,该用什么数据类型,
有这方面的例子吗?

解决方案 »

  1.   

    用nvarchar类型
    CREATE PROCEDURE sp_test
        @ouChar NVARCHAR(64) OUTPUT
    AS
      SET @ouChar = 'skdfk'
    GO
      

  2.   

    那么存储过程中对应nvarchar类型的数据类型是什么?
    指定的接收长度为多少?
      

  3.   

    你是问调用时吗?如果是 vc 需要用 CComVariant 作为参数,vb 的话无需指定类别
      

  4.   

    (例子)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;
      

  5.   

    //(例子)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; // 获取输出参数