Delphi7呼叫MySql存盤程序,在存盤程序中打開游標下面,給存盤程序出參賦值,得不到出參值。如下所示:
create procedure MyProc(in inpara varchar(20),out outpara varchar(100))
begin
...
declare cur1 cursor for select id from table1;
open cur1;
set outpara='abc'; //只要放在open cur1;陳述句后面,就得不到outpara的值,顯示為空。
...
end;
求解!
uj5u.com熱心網友回復:
outpara='abc';uj5u.com熱心網友回復:
outpara='abc';前面不用加set??
這樣不行呀,大俠
uj5u.com熱心網友回復:
在線急等。估計這是一個曠世難題,全壇人來也不能解決!!!uj5u.com熱心網友回復:
你檢查一下,是否因為open的時候出現了例外,導致后面代碼并沒執行。可以加上例外處理。uj5u.com熱心網友回復:
沒有例外的,在Navicat Premium中除錯就可以提取出來的出參值的。游標就是一個很簡單的查詢陳述句,打開后,什么也不做,就關閉游標了。后面跟著給出參賦值。uj5u.com熱心網友回復:
Navicat Premium中除錯就可以提取出來的出參值,那么就應該不是存盤程序內部的問題了。
uj5u.com熱心網友回復:
對,我感覺應該是delphi程式中呼叫的存盤程序有問題,可是又找不到,因為只要不打開存盤程序中的游標,就能提取到回傳值。delphi程式中執行呼叫存盤程序代碼如下:...
sStr:='a';
with adostoreproc1.parameters do
begin
createparameter('INPARA',ftstring,pdinput,100,sStr);
createparameter('OUTPARA',ftstring,pdoutput,4000,null);
end;
adostoreproc1.execproc;
sout:=adostoreproc1.parameters.parambyname('OUTPARA').value; //這里打斷點,回傳引數值為空,sout自然也是空了。
...
uj5u.com熱心網友回復:
幫看一下我的代碼,是不是有什么我疏漏的地方。
uj5u.com熱心網友回復:
createparameter('OUTPARA',ftstring,pdoutput,100,'');改成這樣試試
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276822.html
標籤:數據庫相關