請問oralce adostoreproc 取得 cursor的方法 |
尚未結案
|
windheartalan
一般會員 發表:21 回覆:23 積分:8 註冊:2005-03-24 發送簡訊給我 |
各位先進大家好,小弟有遇到問題想跟大家請教,
當我使用TADOStoreProc,想要取得cursor值時,沒辦法成功, 我有參考到這篇文章, http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=48618 但cursor部分不管我是設成ftcursor,或是ftinterface,都沒辦法成功執行, 有錯誤訊息如下: ftcursor:parameter object is improperly defined ==> 如上面連結所說,似乎ftcursor僅能用於Tparam,不能用於Tparameter, ftinterface:application uses a value of wrong type for current operation. ==>看起來似乎是哪個地方使用的型態錯了,不管我是用pdInputOutPut或是pdOutPut,都是一樣的訊息, 想請教兩個部分: 1.可否有相關資訊或範例可提供,ADOStoreProc取得Cursor的方式, 2.cursor能拿到的話,除了用dbgrid去取得外,有沒有甚麼method,可以直接取得cursor中各欄位的值, 以上我找不到相關範例,煩請高手指教,感謝 |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
請嘗試用 Package 把 Procedure 包起來, 如以下寫法:
CREATE OR REPLACE PACKAGE <PackageName> AS TYPE CursorType IS REF CURSOR; PROCEDURER <ProcName1> ( <Param1> IN <Type1>, <Param2> IN <Type2>, ........ <Param n-2> IN OUT CoursorType, <Param n-1> OUT <Type n-1>, <Param n> OUT <Type n>); END <PackageName>; / CREATE OR REPLACE PACKAGE BODY <PackageName> AS ...... -- Package 全域變數宣告, SubProcedure 宣告 ---------- PROCEDURE <ProcName1> ( <Param1> IN <Type1>, <Param2> IN <Type2>, ........ <Param n-2> IN OUT CoursorType, <Param n-1> OUT <Type n-1>, <Param n> OUT <Type n>) IS ........ -- 本 Procedure Private 變數宣告, 類似 Delphi 寫法 BEGIN ........ Statement OPEN <Param n-2> FOR SELECT * FROM ....... WHERE ......; RETURN; EXCEPTION ........ OPEN <Param n-2> FOR SELECT * FROM DUAL WHERE 0=1; END <ProcName1>; ---------- END <PackageName>; / 前端呼叫 Schema.<PackageName>.<ProcName1> 並依序設定參數後, 執行 Open() 將該傳回之 Cursor 開啟. 開啟 Cursor 後, 就如同 ADOQuery 的 SELECT * FROM ..... 的結果是一樣的.
編輯記錄
herbert2 重新編輯於 2010-08-19 10:40:25, 註解 無‧
|
windheartalan
一般會員 發表:21 回覆:23 積分:8 註冊:2005-03-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |