我在ORACLE中自定义了一个函数TEST;入参一个,出参一个,返回值为布尔型;
请问一下在VC++中怎样调用ORACLE中的自定义函数??

解决方案 »

  1.   

    参考下面两种方法:CREATE PROCEDURE GetOldPart(@PrjNo   nvarchar(100),@PartNo nvarchar(200),@AsmPath nvarchar(300))
    ASselect * from YourTbName 
    where CCMS_CLASS_PART.K_PRJNO=@PrjNo 
    and K_PARTNO=@PartNo 
    and K_ASMPATH=@AsmPath GO在VC里
    CString strQuery="GetOldPart '"+csPrjNo+"','"+csPartNo+"','"+csAsmPath+"'";
    m_pCmd->ActiveConnection = mpdb;
    m_pCmd->CommandText = _bstr_t(strQuery);
    m_pCmd->CommandType = adCmdStoredProc;
    m_pConnection->CursorLocation = adUseClient;
    m_pRecordset = m_pCmd->Execute(NULL, NULL, adCmdText);
    ----------------------------------------------------------------ParameterPtr  para[3];  
    _CommandPtr  pCmd;  
     
    pCmd.CreateInstance("ADODB.Command");  
    para[0].CreateInstance("ADODB.Parameter");  
    para[1].CreateInstance("ADODB.Parameter");  
    para[2].CreateInstance("ADODB.Parameter");  
    pCmd->ActiveConnection=m_pConn;  
                 
    pCmd->CommandText="存储过程名"  
    para[0]=pCmd->CreateParameter("",  adBSTR,adParamInput,  sizeof(char[50]),vVar);  //字符串型输入参数  
    pCmd->Parameters->Append(para[0]);  
    para[1]=pCmd->CreateParameter("",  adInteger,adParamInput,  sizeof(int),olevariantVar);  //整型输入参数  
    pCmd->Parameters->Append(para[1]);  
    para[2]=pCmd->CreateParameter("",  adBSTR,adParamOutput,  sizeof(char[50]),"");    //字符串型输出参数  
    pCmd->Parameters->Append(para[2]);  
    pCmd->Execute(  NULL,  NULL,  adCmdStoredProc); 
      

  2.   

    楼上的兄弟,我有个问题:
    1、你用的是存储过程,是没有返回值的,ORACLE中的函数必须有返回值;
    2、你在VC中的调用是调用存储过程的方法,这个方法我已经在VC中实现,但是同样的方法用在函数上不能成功;CREATE OR REPLACE FUNCTION TEST (
      v_MOBILE           in VARCHAR2,
      v_ice              out number
    )
    return boolean
    As
    Begin
         if length(v_MOBILE)=11 then
            v_ice:=1;
            return true;
         else
             v_ice:=0;
             return false;
         end if;
    EXCEPTION
    WHEN OTHERS THEN
    v_ice:=0;
    return false;
    END;上面的这个函数,在VC中调用,我怎么取到v_ice出参和返回的布尔类型的值???
      

  3.   

    1\..上面是执行的带返回值的存储过程了...有些区别
    2\函数的话,按下面的方法把结果返回到记录集,再到记录集取结果:strSQL.Format(_T( "select test('%s') from dual"),参数); 
    m_record = m_conn-> Execute(...);