我是剛學delphi的,對數據庫語法不是很熟,現想用一個存儲過程來存一批數據,在數據庫中創建一個存儲過程,語法如下:
CREATE   PROCEDURE pTempleteSave
AS
SET NOCOUNT ON
Begin tran
insert into tTempCell (fID,fProID,fDefID)
select fID,fProID,fDefID
if @@error<>0
begin
Rollback Tran  
end
else
begin
Commit Tran
end
SET NOCOUNT OFF
上面語法是否有錯,在delphi中我將TADOStoredProc與此存儲過程關聯起來,現在我想將三個文本框的內容寫入數據庫,代碼要怎樣編寫。謝謝!

解决方案 »

  1.   

    这样吧:
    CREATE   PROCEDURE pTempleteSave
    (@fID char (20),
     @fProID char (20),
     @fDefID char (20)
    )
    AS
    SET NOCOUNT ON
    Begin tran
    insert into tTempCell (fID,fProID,fDefID)
      values( @fID, @fProID, @fDefID)
    if @@error<>0
    begin
    Rollback Tran  
    end
    else
    begin
    Commit Tran
    end
    SET NOCOUNT OFF
      

  2.   

    VeryOldMan(老者):,謝謝你,我在數據庫中已建好存儲過程,為什麼在DELPHI中用如下語句寫不到婁據庫中
    with adostoredproc1 do
    begin
    parameters.ParamByName('@fID).Value :=tid.Text;
    parameters.ParamByName('@fProID).Value :=tproid.Text;
    parameters.ParamByName('@fDefID).Value :=tdefid.Text;
    end;這條語句要怎樣寫才能寫入到數據庫中
      

  3.   

    adostoredproc1.ExecSQL;加在那裡,回滾我在存儲過程中寫好啦,事務不用寫是不用寫在那裡,我上面語句那條是事務語句,我真的搞不懂,請大師指點
      

  4.   

    我原来是采用以下的笨方法:
      with ADOStoredProc1 do
        begin
          Close;
          Parameters.Clear;
          ProcedureName := 'Proc_SFMX_to_One;1';
          Parameters.Add;
          Parameters.Add;
          Parameters.Add;
          Parameters[0].Name := '@fID';
          Parameters[1].Name := '@fProID';
          Parameters[2].Name := '@fDefID';
          Parameters.ParamByName('@fID').Value  := value1;
          Parameters.ParamByName('@fProID').Value := value2;
          Parameters.ParamByName('@fDefID').Value := value3;
          Open; //如果存储过程没有返回数据集,则用ExecProc;
        end;