當前位置:首頁 » 存儲配置 » delphi存儲過程

delphi存儲過程

發布時間: 2022-11-03 11:55:21

Ⅰ delphi 調用存儲過程

sql資料庫為例子 代碼如下:
ADOStoredProc1.Close;
DataSource2.DataSet:=ADOStoredProc1;
ADOStoredProc1.ProcereName:='存儲過程名稱';
ADOStoredProc1.Parameters.Refresh; //必須有該條刷新語句
ADOStoredProc1.Parameters[1].Value:=2; //在存儲過程組件里參數從1 開始
ADOStoredProc1.ExecProc;
ADOStoredProc1.open;

Ⅱ delphi客戶端調用存儲過程返回參數,請問怎麼解決

開發環境:Delphi XE 10.1 Update 2
伺服器:FDConnection1-->FDQuery1-->DataSetProvider1
客戶端:SQLConnection1-->DSProviderConnection1-->ClientDataSet5

procere TFrame01_Frame.Button3Click(Sender: TObject);
begin
ClientDataSet5.Close;
// FormID、Opid是傳入值,doccode是傳出值 注意參數不能帶@,傳出值不要加output,傳入、傳出類型已在CreateParam時指定了
ClientDataSet5.CommandText := ' Execute _sysP_NewDocCode :FormID,:Opid,:doccode ';
ClientDataSet5.Params.Clear;
ClientDataSet5.Params.CreateParam(ftString,'FormID',ptInput);
ClientDataSet5.Params.CreateParam(ftString,'Opid',ptInput);
ClientDataSet5.Params.CreateParam(ftString,'doccode',ptOutput);
ClientDataSet5.Params.ParamByName('FormID').Size := 30;
ClientDataSet5.Params.ParamByName('FormID').Value :='Sale2002';
ClientDataSet5.Params.ParamByName('Opid').Size := 20;
ClientDataSet5.Params.ParamByName('Opid').Value :='191025';
ClientDataSet5.Params.ParamByName('doccode').Size := 20;
ClientDataSet5.Execute;//如果不返回結果集,執行此語句
//ClientDataSet5.Open;
Edit2.Text := ClientDataSet5.Params.ParamByName('doccode').Value;
end;

特別注意:參數不能帶@,傳出值不要加output,傳入、傳出類型已在CreateParam時指定了,這兩坑有點深耗費多天時間查詢資料以及摸索。
希望能夠對大家有用,少走些彎路,同大家結菩提緣

Ⅲ Delphi怎樣使用存儲過程參數

調用存儲過程推薦使用Query,Adoquery組件
query.close;
query.sql.clear;
query.sql.add('exec db.prtemp(@id=:id)');
query.parambyname('id').asinteger:=1;
query.open;
----------------------------------------------------------------------------------------------------
也可用Tstoredproc
storedproc1.active=false;
storedproc1.databasename="dbname";
storedproc1.storedprocname="strdprcname";
storedproc1.params.clear;
storedproc1.params.createparam(ftstring,"p1",ptinput);
storedproc1.params.createparam(ftstring,"p2",ptinput);
storedproc1.params.parambyname("p1").asstring:=varstring1;
storedproc1.params.parambyname("p2").asstring:=varstring2;
storedproc1.active=true;
----------------------------------------------------------------------------------------------------
調用存儲過程最好使用Query組件,本人就是用Tstoredproc組件而屢屢出錯!這一段痛心疾首的錯誤老是涉及到ISAPI32.dll,讓我這個丈二和尚模不到屁股。使用Query控制項調用存儲過程如下:
加入你的存儲過程有兩個參數:
CREATE PROCEDURE Procere_Name @proc1 int,@proc2 char(8)
AS
……
則你的Query1控制項的代碼如下:
With Query1 do
Begin
Close;
SQL.Clear;
SQL.Add(' Exec Procere_Name :proc1,:proc2 ');
ParamByName('proc1').Value:=4;
ParamByName('proc2').Value:='Hello';
Try
ExecSQL;
Except
raise;
End
End

Ⅳ 用delphi編寫進銷存軟體需要用存儲過程嗎

1、用delphi編寫進銷存軟體,與是否需要使用存儲過程,關鍵點在於軟體的開發過程中,是否必需要用到存儲過程。
通常來說,存儲過程是在資料庫中,為了完成特定功能所編寫的SQL 語句集,存儲在資料庫中,供用戶調用的。而如果可以直接通過 SQL 來完成的,就不必要用存儲過程。
2、由於存儲過程是存儲在資料庫中的,所以與 delphi 關系不大。

Ⅳ delphi 中如何調用sql 存儲過程

使用TADOStoredProc組件,可以,給你舉個例子好了

with ADOStoredProc1 do
begin
Close;
Parameters.Clear;
ProcereName:='SaveDate_dbzsm'; //存儲過程名稱
Parameters.CreateParameter('v_wlid', ftString, pdInput, 20, fgUnassigned);//傳入參數(數字代表長度)
Parameters.CreateParameter('v_ddid', ftString, pdInput, 20,fgUnassigned); //傳入參數
Parameters.CreateParameter('v_tm', ftString, pdInput, 500,fgUnassigned); //傳入參數
Parameters.CreateParameter('v_returnstr', ftString, pdoutput, 30,fgUnassigned); //返回值
//為參數賦值
Parameters[0].Value :=trim(edit1.text);
Parameters[1].Value := trim(edit2.text);
Parameters[2].Value := trim(edit2.text);
Parameters[3].Value := ' ';

ExecProc;
reuturn:= Trim(Parameters.ParamByName('v_returnstr').Value);
end;
reuturn就是返回值,你可以放到stringgrid 裡面。

也可以用adoquery 連接存儲過程。

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('exec SaveDate_dbzsm :wlid,:ddid,:tm,:returnstr output');
Parameters.ParamByName('wlid').Value :=trim(edit1.text);
Parameters.ParamByName('ddid').Value :=trim(edit2.text);
Parameters.ParamByName('tm').Value := trim(edit3.text);
Parameters.ParamByName('returnstr').Value := ' ';
Open;
reuturn:= Parameters.ParamByName('returnstr').Value;
end;

http://..com/question/316727588.html

Ⅵ 怎樣在Delphi中實現在運行中實現帶參數的存儲過程

我在法度榜樣中需應用帶參數的存儲過程。我發明若存儲過程不帶參數,可在代碼中寫:
ProcereName
:=
存儲過程名;
Open;open;即可。但若是我在代碼中直接寫帶參數的存儲過程如下:Parameters[1].Value
:=
值;ProcereName
:=
存儲過程名;prepared;open;即可。但若存儲過程帶參數,就必須在設計中事先設好存儲過程名,再在代碼中寫:
Parameters[1].Value
:=
值;Delphi始終顯示一個缺點說袈浣界。參數部分若是改成如下:Parameters.ParamByName['參數名'].Value
:=
值;Delphi始終顯示一個缺點說沒此參數名。各位高手,請指教一下,難道Delphi功能這么差,連這么件小事都實現不了?

Ⅶ Delphi怎麼使用SQL SERVER的存儲過程,參數問題

以存儲過程名sp_output為例,條件為where,返回結果為某最大單號(字元型),返回列名為output。具體按以下步驟實現:
1、創建ADO,輸入執行存儲過程的SQL命令:EXEC
sp_output
『』(註:引號內為條件);
2、初使化ADO,即:
ADO.close;
ADO.open;
3、調用存儲過程的返回值:ADO.fieldbyname('output').asstring。

Ⅷ delphi客戶端調用存儲過程返回參數,請問怎麼解決

有位同夥告訴我一種辦法,但答復我不太明白,我的目標是如許的,三層構造下客戶端給存儲過程幾個參數,返回幾個參數答復如下:我有一個經驗,後台資料庫是SqlServer2000:
1.存儲過程不返回記錄集,只返回參數。
TClientDataSet.CommandText:=
'
Declare
@OutputData
int
Excute
StoredProc1
@OutputData
Output
如許就可以返回輸出的參數了。
以上調用輸出可能有錯,但語句是對的,你式一下。
2.存儲過程要返回記錄集,也要返回參數。
你只好再中心層寫辦法調用了。
返回參數值:=
clientdataset.fieldbyname('outputdata').asstring;
在delphi中該怎麼定義參數,怎麼處理,還請明示1。
這個commandtext到底該怎麼寫?Excute
StoredProc1
@OutputData
Output
中的outputdate在存儲過程中是否應當定義?2。Select
@OutputData
起什麼感化?3。多參數怎麼解決,參數名稱是否和存儲過程中應當一樣?4。open打開到底返回的是記載照樣參數?分別怎麼處理?
Select
@OutputData
'
你要用open打開,返回是一筆記錄。如不雅存儲過程名稱位disp1
傳入參數在存儲過程平分別為@time1,@time2
傳出參數位@get1,@get2均為float

熱點內容
什麼控制壓縮 發布:2025-05-19 14:28:13 瀏覽:930
網路伺服器忙指什麼 發布:2025-05-19 14:28:10 瀏覽:188
伺服器有外網ip 發布:2025-05-19 14:02:02 瀏覽:833
電腦上c語言編程軟體 發布:2025-05-19 13:55:17 瀏覽:125
php56windows 發布:2025-05-19 13:54:23 瀏覽:717
如何查看攻擊過伺服器的ip地址 發布:2025-05-19 13:45:44 瀏覽:942
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:380
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:613
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32