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

如何用Delphi 6 宣告一個變數給 Oracle ??

答題得分者是:Fishman
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-04 20:08:07 IP:61.220.xxx.xxx 未訂閱
如題: 我的Delphi如下: HR_Oracle.ADOQuery.SQL.Clear; HR_Oracle.ADOQuery.SQL.Text:= ' select EMP_NAME from employee ' +                               ' where DEPT_CODE = '1'; R_Oracle.ADOQuery.Open;    如下: 如何宣告一變數 :Elvis_no 讓Oracle看的懂??不要使用常數!!    HR_Oracle.ADOQuery.SQL.Clear; HR_Oracle.ADOQuery.SQL.Text:= ' select EMP_NAME from employee ' +                               ' where DEPT_CODE = :Elvis_no'; R_Oracle.ADOQuery.Open; ======================= 謝謝各位大德不吝賜教!! 小弟感激不進 =======================
------

南無藥師琉璃光如來
保佑您
chuang7287
初階會員


發表:1
回覆:20
積分:29
註冊:2002-10-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-05 00:17:49 IP:210.61.xxx.xxx 未訂閱
或許可以換個方式處理,不見得一定要給SQL語法一個變數,改成以下這樣如何 HR_Oracle.ADOQuery.SQL.Clear; HR_Oracle.ADOQuery.SQL.Text:= ' select EMP_NAME from employee ' + ' where DEPT_CODE = ''' Elvis_no ''''; R_Oracle.ADOQuery.Open;
------
結案=動力
高手等等我 .... 追隨高手永不懈怠!!
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-07 16:40:10 IP:61.220.xxx.xxx 未訂閱
謝謝 chuang7287< > 我之所以要使用宣告變數給 > ======================= 謝謝各位大德不吝賜教!! 小弟感激不進< > =======================
------

南無藥師琉璃光如來
保佑您
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-08 08:31:23 IP:210.65.xxx.xxx 未訂閱
Hi elvis114,
HR_Oracle.ADOQuery.SQL.Clear;
HR_Oracle.ADOQuery.SQL.Text:= ' select EMP_NAME from employee where DEPT_CODE = :Elvis_no';
HR_Oracle.ADOQuery.Parameters.ParamByName('Elvis_no').Value := 'YourCustomValue';
HR_Oracle.ADOQuery.Open;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-08 11:24:58 IP:61.220.xxx.xxx 未訂閱
謝謝 Fishman< > 讓我出現暑光,這是可以的沒有問題< > 可以在請教一下,如果我 SQL 換成如下: 我的Delphi: HR_Oracle.ADOQuery.SQL.Text:= ' Select sum(SW_qty)sum from emp_sw where DELETE_FLAG =''N'' and sw_code = :vSW_CODE ' ; HR_Oracle.ADOQuery.Parameters.ParamByName(vSW_CODE).Value := '1' ; HR_Oracle.ADOQuery.Open; 可是我執行後出現如下ORA Error : ORA-00937: 不是一個單一群體的群體函數 是不是我還要宣告那裡ㄋ,或是使用有問題ㄋ< > ======================= 謝謝各位大德不吝賜教!! 小弟感激不進< > =======================
------

南無藥師琉璃光如來
保佑您
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-08 13:28:12 IP:210.65.xxx.xxx 未訂閱
Hi elvis114,    看來似乎是 ADO 的 BUG,我試了一下產生相同錯誤,但是在 Design Time 是沒有問題的,你可以改成以下語法試試
HR_Oracle.ADOQuery.Close;
HR_Oracle.ADOQuery.SQL.Text := ' Select sum(e.SW_qty) sum_qty from emp_sw e where e.DELETE_FLAG = '   QuotedStr('N')   ' and w.sw_code = :vSW_CODE';
HR_Oracle.ADOQuery.Parameters.ParamByName('vSW_CODE').Value := '1' ;
HR_Oracle.ADOQuery.Open;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-08 14:09:34 IP:61.220.xxx.xxx 未訂閱
Dear Fishman : 謝謝你喔^^ 可是我試了還是不行ㄋ FLAG = ' QuotedStr('>e.sw_code = :vSW_CODE'; HR_Oracle.ADOQuery.Parameters.ParamByName('vSW_CODE').Value := '1' ; HR_Oracle.ADOQuery.Open; < > ======================= 謝謝各位大德不吝賜教!! 小弟感激不進< > =======================
------

南無藥師琉璃光如來
保佑您
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-06-08 16:48:42 IP:210.65.xxx.xxx 未訂閱
Hi elvis114,    Sorry !! 我剛剛測試試用 count 沒有問題,沒想到用 sum 竟然會 Error,奇怪的是 BDE 也沒有問題,在 ADO 下我改用以下寫法就 OK 了,你再試試
procedure TForm1.Button1Click(Sender: TObject);
begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Text := 'Select  sum(e.sw_qty) as sum_qty '   #13  
                          'from   (select :vSW_CODE sw_code from dual) d,'   #13  
                          '        emp_sw e '   #13  
                          'where   e.delete_flag = '   QuotedStr('N')   ' '   #13  
                          'and     e.sw_code = d.sw_code';
    ADOQuery1.Parameters.ParamByName('vSW_CODE').Value := '1';
    Memo1.Lines.Assign(ADOQuery1.SQL);
    ADOQuery1.Open;
end;
Good Luck !! ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
elvis114
一般會員


發表:37
回覆:53
積分:18
註冊:2003-06-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-06-09 14:19:00 IP:61.220.xxx.xxx 未訂閱
再一次ㄉ感謝Fishman此法沒有問題^^< > 再問一個小問題,如果是 > ======================= 謝謝各位大德不吝賜教!! 小弟感激不進< > =======================
------

南無藥師琉璃光如來
保佑您
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-06-09 15:56:18 IP:210.65.xxx.xxx 未訂閱
Hi elvis114,    我是用 D7 作的,也就是說,D7 應該有相同問題,至於 D8 因為沒用過不知道會不會有問題,也不知 BORLAND 是否會修正此問題,不知其他大大是否知道有此修正程式可上?     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-09-10 11:29:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!