在SQl中写的存储过程,在delphi 中怎么调用

解决方案 »

  1.   

    try
        ADOStoredProc := TADOStoredProc.Create(nil);
        ADOStoredProc.Connection := ADOConnection;    ADOStoredProc.ProcedureName := '存储过程1';
        ADOStoredProc.Parameters.CreateParameter('tablename', ftString, pdInput, 20,传入值1);
        ADOStoredProc.Parameters.CreateParameter('fieldname', ftString, pdInput, 20, 传入值2);
        ADOStoredProc.Parameters.CreateParameter('condition', ftString, pdInput, 20, 传入值3);    ADOStoredProc.Prepared := True;
        ADOStoredProc.ExecProc;
      finally
        ADOStoredProc.Free;
      end;
      

  2.   

    另一种
    adoQuery.sql.add('exec 存储过程1 参数');
    adoQuery.open;
      

  3.   

    用ADODataSet也行
          ADODataSet1.Close ;
          ADODataSet1.CommandType :=  cmdText ;
          ADODataSet1.Parameters.Clear ;
          ADODataSet1.CommandText := '{call 存储过程(参数1,参数2)}' ; //调用存储过程
          ADODataSet1.Open ;
      

  4.   

    query.sql.add('exec '+ 存储过程名称 +' 参数1,参数2.........')
      

  5.   

    简单方便
    adoQuery.sql.add('exec 存储过程NAME 参数');
      

  6.   

    adoQuery.sql.add('exec 存储过程 参数');
      

  7.   

    那么在SQl过程中怎么用传递过去的参数做条件
      

  8.   

    ORACLE中示例
    create or replace procedure t1(infltnox varchar,outfltnox varchar,portnox varchar,planenox varchar,result1 out varchar) is
    begin
    END;
    delphi中:
    SPcommon:TstoreProcedure
          SPcommon.StoredProcName :='t1';//调用存储过程将记录写入相应表
           SPcommon.Prepare ;
           SPcommon.ParamByName('infltnox').AsString :=JinBanci ;
           SPcommon.ParamByName('outfltnox').AsString :=chubanci;
           SPcommon.ParamByName('planenox').AsString :=planeno ;
           SPcommon.ParamByName('portnox').AsString :='portno;
           SPcommon.ExecProc ;
      

  9.   

    可以在后面附加:
    strResult:=SPcommon.parambyname('result1 ').AsString;可以获取返回的结果
      

  10.   

    我按照楼上有前辈写了还是不成功。我原码发出来
    ADOStoredProc1.ProcedureName:='swldmx_jz';
    ADOStoredProc1.Parameters.ParamByName('@rp1').Value:='2002-01-01';
    ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';
    ADOStoredProc1.Prepared:=true;
    ADOStoredProc1.ExecProc;
    //以上部门是delphi调用程序
    CREATE     PROCEDURE swldmx_jz 
    @rp1 datetime,
    @rq2 datetime
     AS
    delete from jz_仓库材料明细帐 where 日期>=@rp1 and 日期<=@rq2
    这部份是SQL存储过程
    不知要怎么改,
    是不是数据类型的问题。还是其它的问题
      

  11.   

    ADOStoredProc1.Parameters.ParamByName('@rp1').Value:='2002-01-01';
    ADOStoredProc1.Parameters.ParamByName('@rq2').Value:='2005-01-01';你还没有创建参数呢,怎么就往里面带啊
    先创建参数
      

  12.   

    Create Procedure ProcedureName
          (参数变量)
    AS
      --------------------------------
      --------------------------------建议看看SQL SERVER 的帮助.
      

  13.   

    晕S,这样创建!ADOStoredProc.Parameters.CreateParameter('@rp1', ftDatetime, pdInput, 20,'2002-01-01');
      

  14.   

    你不是已经在SERVER中的存储过程中声明变量了吗?你试试在前面加上adostoredproc.parameters.refesh;