为什么用不着Query呢?
用TStoredProc啊!

解决方案 »

  1.   

      try
        with myStoredProc do
        begin
          ProcedureName := 'ow_clr_Form';
          Parameters.Clear;
          Parameters.AddParameter;
          Parameters[0].Name := 'Return';//返回值
          Parameters[0].Direction := pdReturnValue;
          Parameters[0].DataType := ftInteger;      Parameters.AddParameter;
          Parameters[1].Name := '@Lister';//输入参数
          Parameters[1].Direction := pdInput;
          Parameters[1].DataType := ftString;
          Parameters[1].Value := pShareData.pOperator.sUserCode;      Parameters.AddParameter;
          Parameters[2].Name := '@Form_No';//OUTPUT参数
          Parameters[2].Direction := pdInputOutput;
          Parameters[2].DataType := ftString;
          Parameters[2].Size := 10;
    //      Parameters[2].Value := '2001110602';      ExecProc;
          if Parameters[0].Value=0 then
          begin
            Edit1.Text := Parameters[2].Value;
          end;
        end;
      Except
        On E:EADOError do
        begin
          Application.MessageBox(Pchar('由于以下原因,操作失败:'+E.message),'出错',mb_OK+Mb_IconError);
          Exit;
        end;
      end;
      

  2.   

    呵呵,不用query就显示不出代码多嘛,你可以这样:
    with query1 do
    begin
      close;
      sql.clear;
      sql.add('call mySP(:param1,:param2)');
      parambyname('param1').asstring:='呵呵,第一个参数';
      parambyname('param2').asstring:='呵呵,第二个参数';
      open;
    end;
      

  3.   

    在 TQuery 中可以直接执行存储过程with query1 do
    begin
        sql.clear;
        sql.add('exec myStoredProc 2222 '); //@empno 为数字型
    //    sql.add('exec myStoredProc ''2222'' '); //@empno 为字符、日期型
        execsql;
    end;