例如,在sql/plus中如下可以通过SQL> var test varchar2(50);
SQL> exec ss('8044',:test);PL/SQL procedure successfully completed
test
8044---------
但是,到Delphi中这样调用却不行,怎么弄?
   ado1.Close;
   ado1.SQL.Clear;
   ado1.SQL.Add('var test varchar2(50);');
   ado1.SQL.Add('exec ss(''8044008'',:test)');
   ado1.open;用ADOStoredProc可以做到,但我想请教用adoquery怎么做?

解决方案 »

  1.   

    ss()的第一个参数是input,第二个参数是output
      

  2.   

    SQL语句中,字符串是不是该用双引号包含,而不是单引号
    ado1.SQL.Add('exec ss("8044008",:test)'); 顺便问下,test前面加冒号是什么作用
      

  3.   

    我是用的oracle,我的目的就是得到返回值,请问如何做到?
    ss(参数1 in,参数2 out)在DELPHI中,先var test string;
    再运行
    ado1.SQL.Add('exec ss(''8044008'',:test)');
    却得不到第二个参数的返回值
      

  4.   

    with self.ADOCommand1 do
      begin
        CommandType:= cmdStoredProc;
        CommandText:='spName';
        Parameters.CreateParameter( '参数1', ftString, pdinput, 100, '12121' );
        Parameters.CreateParameter( '参数2', ftString, pdoutput, 100, '' );
        Execute;
        showmessage( Parameters[1].Value );
      end;
      

  5.   

    Query.SQL.Clear;
          Query.SQL.Add('declare @A int');
          Query.SQL.Add('execute @A=存储过程 ');
          Query.SQL.Add('@P =' + QuotedStr(参数));
          try
          Query.ExecSQL;
          except        
          on E: Exception do
          begin
            E.Message=......//这里就是存储过程里的RAISERROR
          end;
          end;
      

  6.   

    adocommand我从来没用过,能否告知其用途,用adoquery不能取代吗?还有个问题,Oracle的存储过程的返回值是数组要怎么取得返回值例如:ss(参数1 in,参数2 out) 中的参数2上arr[10]字符类型的
    ?
    ?
      

  7.   

    问的具体点吧。1.我想写个Oracle的存储过程,其中一个返回参数是数组,要如何定义这个数组?
      如:my_proc(参数1 in,参数2 out), 参数2是array[10]字符类型2.假设上面的Oracle存储过程已经写好,那么在Delphi中如何调用这个存储过程得到返回值?
      如:var a : 数组型的
          a := my_proc;
    可以这样取得a的值吗?