如何用Delphi 6 接回 Oracle Return FUNCTION ?? |
尚未結案
|
elvis114
一般會員 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi elvis114, 語法大致如下:
procedure TForm1.Button1Click(Sender: TObject); Var Result : Integer; begin ADOStoredProc1.Close; ADOStoredProc1.Parameters.ParamByName('p_ip_address').Value := Edit1.Text; ADOStoredProc1.ExecProc; Result := ADOStoredProc1.Parameters.ParamByName('RETURN_VALUE').Value; ADOStoredProc1.Close; ShowMessage(IntToStr(Result)); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
elvis114
一般會員 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
elvis114
一般會員 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
Hi elvis114您好:
小弟都是用偷懶的方式...經過實驗證明可行....
不管Function 或是 Procedure 我都是用Tquery 假設您的Function Name: Func1, 參數型態為Varchar2,回傳型態為Number
請試試看啦...
Var i: Integer; begin Query1.Close; Query1.sql.text:='Select Func1('ABC') Return_value from dual'; //Procedure 如下 // Query1.sql.text:='begin procedureName end;'; Query1.Open; i:=Query1.fieldByName('Return_value').asInteger; end;p.s. Oracle 保證可行, 其他資料庫沒有測試過.. 發表人 - yachanga 於 2004/05/20 23:58:56 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi elvis114, Delphi Login 到 DataBase 的帳號是否與該 Function 的 Schema 相同?
若不相同可能會產生此錯誤,意即
你若由 A 帳號 Login DataBase,並呼叫 Function1,即是在 呼叫 A.Function1,檢查一下是否有此錯誤
再者,建立參數時,必須多一個 Return_Value 作為傳回值
procedure TForm1.Button1Click(Sender: TObject); Var Result : Integer; begin ADOStoredProc1.Close; ADOStoredProc1.Parameters.Clear; ADOStoredProc1.ProcedureName := 'TEST_FUNCTION'; ADOStoredProc1.Parameters.CreateParameter('RETURN_VALUE',ftFloat,pdReturnValue,4000,Null); // 回傳值 ADOStoredProc1.Parameters.CreateParameter('P_IP_ADDRESS',ftString,pdInput,4000,Null); // 傳入值 ADOStoredProc1.Parameters.ParamByName('P_IP_ADDRESS').Value := Edit1.Text; ADOStoredProc1.ExecProc; Result := ADOStoredProc1.Parameters.ParamByName('RETURN_VALUE').Value; ADOStoredProc1.Close; ShowMessage(IntToStr(Result)); end;發表人 -
------
Fishman |
elvis114
一般會員 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
|
elvis114
一般會員 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |