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

oracle+delphi的問題,如何想兩張資料表串在一起

答題得分者是:GrandRURU
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-08-09 19:36:53 IP:114.24.xxx.xxx 訂閱
delphi 6的SQL問題
我想要將SQL寫在程式裡面......用一個變數來承接這個查詢子句
但我遇到問題了
程式碼如下:

sql_f := ' SELECT B.date_f,B.kin_f,C.no_f,A.name_f, D.dep_f,'
' from b,c,d,(SELECT no_f,name_f,dep_f FROM crum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) AS A '
' where B.kin_f = C.kin_f( ) '
' and C.no_f= A.no_f( )'
' and A.dep_f= D.dep_f( ) ' ;

這是我的SQL語法~
但執行的時候他會出現
" OAL-00933 " 的錯誤

請問我該如何修改~才可以讓他順利執行
GrandRURU
站務副站長


發表:237
回覆:1658
積分:1759
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-08-10 08:06:45 IP:203.75.xxx.xxx 未訂閱
稍微複雜一點的SQL語法有可能不會被元件接受。
建議使用Stored PROC.來處理

===================引 用 qq33252000 文 章===================
delphi 6的SQL問題
我想要將SQL寫在程式裡面......用一個變數來承接這個查詢子句
但我遇到問題了
程式碼如下:

sql_f := ' SELECT B.date_f,B.kin_f,C.no_f,A.name_f, D.dep_f,'
' from b,c,d,(SELECT no_f,name_f,dep_f FROMcrum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) AS A '
' where B.kin_f = C.kin_f( ) '
' and C.no_f= A.no_f( )'
' and A.dep_f= D.dep_f( ) ' ;

這是我的SQL語法~
但執行的時候他會出現
" OAL-00933 " 的錯誤

請問我該如何修改~才可以讓他順利執行
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-08-10 08:24:09 IP:220.132.xxx.xxx 訂閱
除了使用 " Stored PROC " 以外還有別的方法嗎??
抱歉~因為我對Stored PROC實在不怎麼熟悉,也沒有使用過....


===================引 用 GrandRURU 文 章===================
稍微複雜一點的SQL語法有可能不會被元件接受。
建議使用Stored PROC.來處理

請問我該如何修改~才可以讓他順利執行
senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-08-10 09:32:17 IP:61.219.xxx.xxx 訂閱
from b,c,d,(SELECT no_f,name_f,dep_f   FROM crum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) AS A

ORA-00933: SQL command not properly ended

錯了,不用As
from b,c,d,(SELECT no_f,name_f,dep_f FROM crum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) A
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-08-10 11:46:56 IP:211.75.xxx.xxx 訂閱

D.dep_f,'
' from b,c,d,(SELECT

不要只用猜的,把實際產生出來的sql丟進SQL Developer試
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
GrandRURU
站務副站長


發表:237
回覆:1658
積分:1759
註冊:2005-06-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-08-10 21:32:54 IP:111.249.xxx.xxx 未訂閱
不愧是版主啊!
真的有關鍵到

===================引 用 Coffee 文 章===================

D.dep_f,'
' from b,c,d,(SELECT

不要只用猜的,把實際產生出來的sql丟進SQL Developer試
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-08-10 22:36:19 IP:114.24.xxx.xxx 訂閱
試了~問題出現的是ORA-00936

===================引 用 senso 文 章===================
from b,c,d,(SELECT no_f,name_f,dep_f FROMcrum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) AS A

ORA-00933: SQL command not properly ended

錯了,不用As
from b,c,d,(SELECT no_f,name_f,dep_f FROMcrum UNION ALL SELECT no1_f,name1_f,del1_f FROM yyy) A
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-08-10 22:37:59 IP:114.24.xxx.xxx 訂閱
我是有把它丟到PL/SQL去執行
他有資料出來餒~
可為什麼一道delphi 程式裡面就不能了呢
===================引 用 Coffee 文 章===================

D.dep_f,'
' from b,c,d,(SELECT

不要只用猜的,把實際產生出來的sql丟進SQL Developer試
編輯記錄
qq33252000 重新編輯於 2010-08-10 22:40:04, 註解 無‧
GrandRURU
站務副站長


發表:237
回覆:1658
積分:1759
註冊:2005-06-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-08-12 08:38:05 IP:203.75.xxx.xxx 未訂閱
因為元件會將SQL重新再組譯一次,所以有時候下的指令太複雜會不被接受。

你是用BDE元件嗎?
那除了上述大大的SQL語法提醒外

這個語法也可以試試看
Query1.Prepare;

另外,ISQL PLUS已經有測試過可以跑出結果嗎?
可以丟張跑出正確結果的圖片嗎?

===================引 用 qq33252000 文 章===================
我是有把它丟到PL/SQL去執行
他有資料出來餒~
可為什麼一道delphi 程式裡面就不能了呢
===================引 用 Coffee 文 章===================

D.dep_f,'
' from b,c,d,(SELECT

不要只用猜的,把實際產生出來的sql丟進SQL Developer試
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-08-12 09:29:20 IP:202.39.xxx.xxx 訂閱
您確定『D.dep_f,』有『,』是對的嗎?
可考慮在 Oracle 中以該句 SQL 做個 View,

CREATE OR REPLACE VIEW AS
SELECT .........

則 Delphi 只需寫 SELECT * FROM WHERE ....
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-08-12 14:31:55 IP:220.132.xxx.xxx 訂閱
感謝提醒~~~
刪掉了~~可問一依舊存在


===================引 用 herbert2 文 章===================
您確定『D.dep_f,』有『,』是對的嗎?
可考慮在 Oracle 中以該句 SQL 做個 View,

CREATE OR REPLACE VIEW AS
SELECT .........

則 Delphi 只需寫 SELECT * FROM WHERE ....
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#12 引用回覆 回覆 發表時間:2010-08-12 14:35:29 IP:211.23.xxx.xxx 訂閱
感謝你~~我已經~~找到答案了
因為資料表拉錯欄位
所以當寫在程式碼中
他抓不到他要的值
救出錯了

而在PL/SQL上是直接把值給他
所以可以出現資料~~

這樣的錯誤訊息還得將table一章章拉出來看>"<
謝嚕(怎麼結案呀???)


===================引 用 GrandRURU 文 章===================
因為元件會將SQL重新再組譯一次,所以有時候下的指令太複雜會不被接受。

你是用BDE元件嗎?
那除了上述大大的SQL語法提醒外

這個語法也可以試試看
Query1.Prepare;

另外,ISQL PLUS已經有測試過可以跑出結果嗎?
可以丟張跑出正確結果的圖片嗎?

===================引 用 qq33252000 文 章===================
我是有把它丟到PL/SQL去執行
他有資料出來餒~
可為什麼一道delphi 程式裡面就不能了呢
===================引 用 Coffee 文 章===================

D.dep_f,'
' from b,c,d,(SELECT

不要只用猜的,把實際產生出來的sql丟進SQL Developer試
系統時間:2018-01-18 23:36:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!