delphi 调用存储过程—总结
在网上搜了很多方法? 希望大侠能在这做个总结
我的存储过程CREATE PROC P2
     (@Acc_No VARCHAR(20),
      @Acc_Date DATETIME
    )
AS
INSERT INTO Db_AccBookCheck(Acc_No,Acc_Date,Today_Money,Yesterday_Money)SELECT B.Acc_No,A.Acc_Date , (B.Today_Money+ISNULL(A.Mo,0)) As Today_Money,(B.Today_Money) AS yesterday_Money
FROM
(SELECT         Acc_No, Acc_Date,SUM(In_Money-Out_Money) AS Mo
FROM             Db_Accbook
WHERE   Acc_Date >= DATEADD(DD,-1,@Acc_Date) AND Acc_Date<@Acc_Date GROUP BY Acc_No,Acc_Date) A RIGHT OUTER  JOIN
(SELECT         Acc_No,Acc_Date, Today_Money
FROM             Db_AccBookCheck
WHERE Acc_Date=DATEADD(DD,-1,@Acc_Date) 
) B  ON A.Acc_No=B.Acc_No
GO根据 ACc_No 和 Acc_Date 想求出今日余额和昨日余额
请大侠把自己的方法多用出来瞧瞧!!
不知有谁用过MSStoredProc这个控件没有

解决方案 »

  1.   

    楼主是想在DELPHI里调存储过程?放个TADOStoredProc  with adoproc do
       begin
         Close;
         ProcedureName := 'P2';
         Parameters.Refresh;
         Parameters.ParamByName('@Acc_No').Value := 'adfdsf';
         Parameters.ParamByName('@END_DATE').Value := formatdatetime('yyyy-mm-dd',now);
         open;
      

  2.   

    提示 : update Fields found 2 records ? 怎么弄呢
      

  3.   

    提示 : update Fields found 2 records ? 怎么弄呢
      

  4.   

    open;改成ExecSQL;另外,1楼方法也是可行的
      

  5.   

    我在 SQl 查询分析器中可以执行 到放到delphi中就出错了
      

  6.   


    procedure TDaAccBookCheckEditorForm.cxButton1Click(Sender: TObject);
    begin
      with MSStoredProc1 do
      begin
        try
          Prepare;
          Params.ParamByName('@Acc_No').AsString := cxDBButtonEdit1.Text;
          Params.ParamByName('@Acc_date').AsDateTime := StrToDateTime(cxDBDateEdit1.Text);
          ExecProc;
        except
          ShowMessage('Fields Error');
        end;
      end;
      inherited;
    end;
    用的是 MSStoredProc1 ; 提示无法插入重复索引键; 但表里之前绝对是没有记录啊
      

  7.   

    插入的值是从SELECT B.Acc_No,A.Acc_Date ...来的,所以可以判斷这个查询的结果是有重复的