全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1444
推到 Plurk!
推到 Facebook!

請問oralce adostoreproc 取得 cursor的方法

尚未結案
windheartalan
一般會員


發表:21
回覆:23
積分:8
註冊:2005-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-18 11:26:52 IP:59.124.xxx.xxx 訂閱
各位先進大家好,小弟有遇到問題想跟大家請教,
當我使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-19 10:36:25 IP:202.39.xxx.xxx 訂閱
請嘗試用 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-23 10:43:25 IP:59.120.xxx.xxx 訂閱
謝謝大大的回覆,
Oracle的SP部分,有測過,應該沒有甚麼問題,

我主要的問題在於,delphi中,找不到可以取得cursor的方法,
就算用上面連結的討論,設定ftCursor,或是ftinterface,都是會有錯誤訊息產生,

所以不知道有沒有大大有範例或知道哪裡有連結討論這問題,
小弟已經找了不少地方,但是都沒有很明確的訊息,
反覆的做一些測試也都是回覆上面寫的錯誤訊息,
所以請知道的先進們多多指教了,感恩~
系統時間:2024-11-21 23:49:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!