台灣最大程式設計社群網站
線上人數
1185
 
會員總數:245894
討論主題:189492
歡迎您免費加入會員
討論區列表 >> Oracle >> 關於動態條件的Select方式難題.
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於動態條件的Select方式難題.
價值 : 50 QP  點閱數:5307 回應數:3
樓主

聖暉
初學者
262 16
1071 76
發送站內信

捐贈 VP 給 聖暉
小弟不才,對Oracle沒有MS-SQL熟,所以也許提的問題很簡單,請大大們不要見怪.
小弟有孤狗大神查2天了,真的沒有才來發問的唷!
廢言完畢,問題來了:

1.Oracle有無組合Select字串後再執行的語法?
小弟指的是在PL/SQL或Toad for Oracle,利用字串變數,組合出一大段Select語法後,再去Run那個字串變數,得到查詢解果.

P.S:就是不能在程式端做,才需要詢問囧rz..

2.若上題無法達成,是否可以在Where之後的條件,加判斷式,判斷變數值是否為空,才帶入該條件的語法?
舉例:
Select a.* From TableA a
Where a.Field1='1' and a.Field2 > 0
--然後這裡加判斷式
--if 變數1!='' then
--And a.Field2 like '%變數1%'
--end
--if 變數2!='' then
--And a.Field3 = '變數2'
--end

請大大們可以給小弟一個方向,謝謝^^

搜尋相關Tags的文章: [ Oracle ] , [ 字串 ] , [ Where ] , [ 條件 ] , [ 組合 ] , [ 變數 ] ,
本篇文章發表於2014-04-09 16:20
1樓
不錯的參考

花旗蔘
檢舉此回應
1.Oracle有無組合Select字串後再執行的語法?
小弟指的是在PL/SQL或Toad for Oracle,利用字串變數,組合出一大段Select語法後,再去Run那個字串變數,得到查詢解果.

-------提供個簡例 供您參考
-----build test env
create table result (id int,name varchar2(20));
insert into result values(1,'a');
insert into result values(2,'b');
commit;

-----範例語法如下
set serveroutput on
declare
type benx is table of result%rowtype;
v_sql varchar2(500);
t_tb benx;
begin
---*如何組字串判斷式寫在這 請自行變化
v_sql:='select * from result';
v_sql:=v_sql||' where id>0';
----

execute IMMEDIATE v_sql bulk collect into t_tb;
dbms_output.put_line('ID Name');
dbms_output.put_line('---------');
for k in t_tb.first..t_tb.last
loop
dbms_output.put_line(t_tb(k).id||' '||t_tb(k).name);
end loop;
end;

-------結果
ID Name
---------
1 a
2 b

------------------------
本篇文章回覆於2014-04-09 21:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
謝謝版主的範例!
版主的方式是可行的.

另外再問一下,是否可以以Data Grid方式輸出,而不是以DBMS Output輸出該查詢語法呢?
本篇文章回覆於2014-04-10 10:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

花旗蔘
檢舉此回應

本篇文章回覆於2014-04-16 18:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.