用parambyname,当然是要out类型的,才有返回值。
dd:=storedproc.parambyname('OUTValue').asstring;

解决方案 »

  1.   

    我用的是SQL Server。
    举例建立存储过程MyProc,它带两个参数,第一个是入口参数,第二个参数可返回给
    调用者;存储过程还带了返回值。
    CREATE PROCEDURE [MyProc]
      @FirstParm Int,
      @SecondParm Int OUTPUT
    AS
    SET @SecondParm = @FirstParm + @FirstParm;
    RETURN @FirstParm * @FirstParm;
    一看就明白:第二个参数的旧数值被忽略,返回时将带回@FirstParm*2;
    存储函数本身的返回值为@FirstParm的平方。调用方法为:
    declare
      @i        Int,
      @RetVal   Int
    exec @RetVal = MyProc 3, @i OUTPUT;
    select @RetVal, @i如何拿select语句返回的结果应该知道吧?  :)
    当然,很多语言有相关的类可以直接拿返回的,那么就用一行exec完成;甚至写上
    存储过程的名称、参数名就搞定。
      

  2.   

    我的程序在solaris运行,用C写的!
      

  3.   

    写在临时表里,去select 
      

  4.   

    你用C写的,不会是用oci调sp吧
      

  5.   

    ORACLE的返回值用DBMS_OUT命令;但返回的值有限;一般存储过程返回表值的处理方法为
    返回TABLE%TYPE;
    具体的数值返回用函数
      

  6.   

    用"select+function_name"可以取得返回值但该函数不能DML使用语句。
      

  7.   

    用"select+function_name"可以取得返回值,但该函数不能使用DML语句。 
      

  8.   

    为什么不直接用oci呢,那样效率也很高啊
      

  9.   

     daviszhang(蓝天) :
      你讲的我不太明白,可再讲得仔细点吗!