例如:SQL SERVER :
DataModule1.ClientDataSet_global.CommandText :='TJADD_pzsc_01 '+''''+DATES+''''+','+''''+ trim(frmlogin.ComboBoxCZY.TEXT) +''''+ ','+''''+trim(ComboBox1.TEXT) +''''返回的是游标可连接到DataModule1.ClientDataSet_global所连接的控件中!ORACLE例子:  CREATE  OR  REPLACE  PACKAGE  pkg_test  
AS  
     TYPE  myrctype  IS  REF  CURSOR;  
 
     PROCEDURE  get  (p_id  NUMBER,  p_rc  OUT  myrctype);  
END  pkg_test;  
/  
 
CREATE  OR  REPLACE  PACKAGE  BODY  pkg_test  
AS  
     PROCEDURE  get  (p_id  NUMBER,  p_rc  OUT  myrctype)  
     IS  
           sqlstr      VARCHAR2  (500);  
     BEGIN  
           IF  p_id  =  0  THEN  
                 OPEN  p_rc  FOR  
                       SELECT  ID,  NAME,  sex,  address,  postcode,  birthday  
                           FROM  student;  
           ELSE  
                 sqlstr  :=  
                       'select  id,name,sex,address,postcode,birthday  
                     from  student  where  id=:w_id';  
                 OPEN  p_rc  FOR  sqlstr  USING  p_id;  
           END  IF;  
     END  get;  
END  pkg_test;
应如何调用!!!!!

解决方案 »

  1.   

    upupupuppupupupupupupuppupupupupupupupupup高手都哪里去了!!!!!!!!!!!!!!!!!!!!!!!!
    分不够可增加地》》》》》》》》》》》》》》》》
      

  2.   

    靠,你贴的也太不负责任了吧,总也让我们看的清楚一些
    给你个例子吧
    在中间层定义函数 
    function CallStoreProc({你需要的参数列表}iPid : integer; var PRc : myrctype);integer;
    var
      daspTemp : TStoredProc;
    begin
      daspTemp := TStoredProc.Create(nil);
      with daspTemp do
      try
        DatabaseName := UserDBX.DataBaseName;
        StoredProcName := 'Oracle对象实例.pkg_test';
        Params.CreateParam(ftInteger, 'p_id', ptInput);
        Params.CreateParam(ftInteger{(或其他你要的类型如ftString,ftFloat等)}, 'p_rc', ptOutput);
        //如果有返回值的还要加上Params.CreateParam(ftInteger{或其他类型}, 'result', ptResult);  
    //下面是参数赋值
        ParamByName('p_id').asInteger := iPid;
        
        ExecProc; 
        PRc := ParamByName('p_rc').AsInteger(或其他类型);
        Result := ParamByName('result').asInteger;
      finally
        Close;
        Free;
    end;
      

  3.   

    老大我要的是用ClientDataSet组件进行调用!!
    ClientDataSet.commandtext:='........';
      

  4.   

    ClientDataSet.commandtext:='过程名称 ‘输入变量’';
    将游标结果直接返回ClientDataSet中!!!
      

  5.   

    ClientDataSet.commandtext:='过程名称 ‘输入变量’';
    将游标结果直接返回ClientDataSet中!!!
    没有象这种样式的方法调用ORACLE的过程吗?????