如何用Delphi 6 宣告一個變數給 Oracle ?? |
答題得分者是:Fishman
|
elvis114
一般會員 ![]() ![]() 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
如題:
我的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 發送簡訊給我 |
|
elvis114
一般會員 ![]() ![]() 發表:37 回覆:53 積分:18 註冊:2003-06-17 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
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 發送簡訊給我 |
謝謝 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 發送簡訊給我 |
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 發送簡訊給我 |
Dear Fishman :
謝謝你喔^^
可是我試了還是不行ㄋ
------
願 南無藥師琉璃光如來 保佑您 |
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
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 發送簡訊給我 |
|
Fishman
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |