如何用Delphi讀取Oracle的Console? |
尚未結案
|
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
1. 如果你用 sqlplus(dos) or sqlplusw(windows), dbms_output.put_line('...') 可將 message print 到前端來. 2. 如果你要用 Delphi Database 元件, 就沒這麼容易, 可透過 Stored Procedure output parameter 傳回 varchar2, 因我目前手邊電腦無相關資料, 可否先請你將 Stored Procedure PL/SQL Code 參數段就可(如create procedure ...([parametes...]);) 先 po 上,這樣比較快. |
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 真是感謝這位大大肯幫我的忙...^_^.. 我的Store Procedure參數段如下: procedure pro01 (i_blocid in varchar2, o_flag out varchar2, i_emrk in varchar2 default 'N') 接下來怎麼做呢?1. 如果 varchar2 夠用 (max length 2000 bytes), 則 : pro01 (i_blocid in varchar2,o_flag out varchar2,i_emrk in varchar2 default 'N', msg out varchar2) as [declation...] begin ... msg:=msg||'....'; end;2. 如果你想用 Oracle Collection (varray/table object) 來回傳 message, 我用 BDE 測試, TStoredProc 一 Active 就當出 Delphi, 或許 >, class="code"> /* using table collection */ CREATE TYPE MyMessage AS TABLE OF VARCHAR2(20); / create or replace FUNCTION RETMSG RETURN MyMessage as C MyMessage; begin C := MyMessage('HELLO 1'); C.EXTEND; c(2):='HELLO 2'; RETURN C; end; / create or replace procedure PRETMSG (C out MyMessage) as begin C := MyMessage('HELLO 1'); C.EXTEND; c(2):='HELLO 2'; end; / ================================= /* using array collection */ CREATE TYPE VMsgs AS VARRAY(20) OF VARCHAR2(20); / create or replace FUNCTION VRETMSG RETURN VMsgs as C VMsgs := VMsgs(); begin C.EXTEND; C(1) := 'HELLO 1'; C.EXTEND; c(2):='HELLO 2'; RETURN C; end; / create or replace procedure PvRETMSG (C out VMsgs ) as begin C := VMsgs(); C.EXTEND; C(1) := 'HELLO 1'; C.EXTEND; c(2):='HELLO 2'; end; / |
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
謝謝你的建議.眼看答案快出來了說..
但我在SqlPlus下會變成這樣:
SQL> ed
已將 file afiedt.buf 寫入
第 2 行被截斷
1* CREATE TYPE MyMessage AS TABLE OF VARCHAR2(20);
2 / Message 154 not found; product=PLUS33; facility=SP1 SQL> ed
已將 file afiedt.buf 寫入
第 2 行被截斷
1* CREATE TYPE VMsgs AS VARRAY(20) OF VARCHAR2(20);
2 / Message 154 not found; product=PLUS33; facility=SP1 這是啥原因ㄚ?
|
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
謝謝版主...
我已經可以Create Type 和 Procedure了
只是我用TADOStoredProc Run下去會出現如下 Exception: raise exception class EOleExcpetion with
message 'ORA-06550' L=line 1 column 7;
PLS-00306:wrong number or type of argumens in call to
'PRETMSG' 我的程式參數C的DataType是"ftInterface"這有關係嗎?
想把他改成"frArray"也不行說.... 發表人 - alex_wu 於 2003/04/01 10:24:46
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
嘗試用 AQOQuery : SQL 'select RETMSG as MSG from dual'<= use function
包成一個 cursor 看看...
(我用 array collection type 試的, 似乎沒問題)
Delphi 可能認不得 對應的 TField.DataType...
小弟的功力已用完了 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=7540183&CC=168637"> 發表人 - Mickey 於 2003/04/01 10:59:46
|
alex_wu
一般會員 發表:6 回覆:10 積分:3 註冊:2003-03-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |