線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2330
推到 Plurk!
推到 Facebook!

有使用 ORACLE 和 DELPHI 的高手嗎,怪問題請教

缺席
GiABin
一般會員


發表:6
回覆:8
積分:2
註冊:2002-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-10 12:15:37 IP:203.75.xxx.xxx 未訂閱
各位前輩:    不知你有沒有遇過這個錯誤,我不清楚是 Oracle 或是 BDE 造成的, 所以就問一問.    SQL 如下:    Sqltext:='select * from (select * from TableA@OLD where FieldX=:Param1 and FieldY=:Param2) '+          'where FieldZ=:Param3';    傳入三個參數 OPEN 後的錯誤訊息    Project Project1.exe raised exception class EDBEngineError withmessage 'General SQL error. ORA-01460: 不實施或不合理的轉換請求 (英文的意思是 unimplemented or unreasonable conversion requested) ORA-02063: 在 line 之前, 自 OLD'. Process stopped. Use Step or Run to continue.    這是什意思? 我咧... 我的測試環境是 連結的資料庫 FieldX=' ' FieldY=' ' FieldZ=' '
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-10 13:55:40 IP:61.219.xxx.xxx 未訂閱
引言: 傳入三個參數 OPEN ...
方便 po 出來嗎 ? TParam.datatype/paramtype property assign 了嗎 ? /* Free 和 Create 一樣重要 */
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-10 16:34:21 IP:211.76.xxx.xxx 未訂閱
請問一下, 傳參數進去的方法是什麼嗎? 看錯誤訊息可能是型態的問題, 可以試著 從這裡來解決.  例如:
  query1.ParamByName('Param1').AsDateTime := DateTimePicker1.Date;
  query1.ParamByName('Param2').AsDateTime := DateTimePicker2.Date;
  query1.ParamByName('Param3'').AsInteger := StrToInt(Edit1.Text);
GiABin
一般會員


發表:6
回覆:8
積分:2
註冊:2002-11-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-11 17:24:07 IP:203.75.xxx.xxx 未訂閱
各位前輩: 三個參數都是字串,語法也沒有問題,如下: query1.ParamByName('Param1').AsString:='A'; query1.ParamByName('Param2').AsString:='B'; query1.ParamByName('Param3').AsString:='C'; TParam.datatype/paramtype property 也有指定, 我的情況還是一樣,所以我就懷疑是 Oxx or Bxx 的 bug 或版本上的不相容, 不知道有沒有人有 其他的看法, 這問題超奇怪的.... 問的好得 40 分,答的好得 60 分,那就 滿分了
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-11 23:03:31 IP:61.221.xxx.xxx 未訂閱
若是這樣的話, 可否請先試試簡化該 query 的 command 來試試看!! 例如: 'select * from TableA@OLD where FieldX=:Param1 ' 看單一參數會不會發生問題 弟試過這樣的 command 並不會發生問題啊..
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-12 09:16:45 IP:61.219.xxx.xxx 未訂閱
我這兒沒有環境可試. 建議 sql 改 : Sqltext:='select * from (select * from "TableA"@"OLD" where FieldX=:Param1 and FieldY=:Param2 and FieldZ=:Param3)'; try try see. /* Free 和 Create 一樣重要 */
GiABin
一般會員


發表:6
回覆:8
積分:2
註冊:2002-11-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-12 14:16:12 IP:203.75.xxx.xxx 未訂閱
各位前輩;    根據您們建議還是不行(只傳一個參數是可以的,我覺得是@OLD的影響) 不過還是謝謝您,感恩啊    PS: 不知道您們知不知道哪個資料庫的網站也有做 good FAQ?     可否告知一下...     問的好得
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-12 14:53:13 IP:61.221.xxx.xxx 未訂閱
GiABin你好: 1.請問Sqltext是變數string嗎? 2.在query1的sql中如何將Sqltext加入?
------
======================
昏睡~
不昏睡~
不由昏睡~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-12 15:57:10 IP:61.219.xxx.xxx 未訂閱
引言: 各位前輩; 根據您們建議還是不行(只傳一個參數是可以的,我覺得是@OLD的影響) 不過還是謝謝您,感恩啊 PS: 不知道您們知不知道哪個資料庫的網站也有做 good FAQ? 可否告知一下... 問的好得 >< face="Verdana, Arial, Helvetica"> 嗯...有可能, OLD 在 Oracle Row Trigger 中是 reserved key word. 換個 Database link name 看看. /* Free 和 Create 一樣重要 */
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-12 16:02:02 IP:61.219.xxx.xxx 未訂閱
引言: GiABin你好: 1.請問Sqltext是變數string嗎? 2.在query1的sql中如何將Sqltext加入?
var sqltext:string; begin sqltext='....'; query1.sql.text := sqltext; ... end; /* Free 和 Create 一樣重要 */
系統時間:2024-04-26 10:17:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!