拼接SQL語句 Oracle

2021-08-06 04:40:05 字數 1268 閱讀 2688

因為專案需要,有一段select語句中的列,想實現可配置,因此就需要用for迴圈。但嘗試之後發現select語句中是不允許放for迴圈的。

需求 select  column1,column2,column3,column41,column42,column43,column44...... from table1 where [條件]。其中column41,column42,column43,column44......是想放在另乙個表中維護的,因此這些列有可能會增加、減少、改變。

現在我們開始寫這部分**。

首先我們需要定義乙個變數,來存放拼接好的sql語句。

v_sql_str   varchar2(30000);

接下來就是拼接語句:

v_sql_str:=concat(v_sql_str,'select ');

v_sql_str:=concat(v_sql_str,column1);

v_sql_str:=concat(v_sql_str,column2);

v_sql_str:=concat(v_sql_str,column3);

--開始拼接column41往後的列

open tdcv for      --開啟游標

select  item_cd

from table2

where [條件];

fetch tdcv bulk collect into item_cds;

close tdcv;

if item_cds.count > 0

then

for i in item_cds.first .. item_cds.last

loop

v_sql_str :=concat (v_sql_str,item_cds(i));     --將查出來的符合條件的列拼接到sql語句中

end loop;

end if;

v_sql_str:=concat(v_sql_str,'from table1');

v_sql_str:=concat(v_sql_str,'where ');

v_sql_str:=concat(v_sql_str,'[加上查詢條件]');

open p_cur for v_sql_str ;        --開啟游標,開始查詢

拼接語句,寫起來除錯比較麻煩一定要沉下心來慢慢理。

1.在拼接where條件時,如果用到時間變數,要注意時間格式以及轉換,除錯了好久這個時間條件。

2.在拼接時,有的地方輸入變數為定值,應注意單引號的使用。

SQL查詢語句拼接

1.判斷引數是否為空,2.把引數中的空格去掉3.1 1永遠是真,加1 1的目的是為了接後面的條件的,否則 where and 條件 and 條件 是有語法錯誤的string sql select from 表名 where 1 1 if condition1 string.empty 再分享一下我老...

語句拼接 常用SQL語句分享

前言 日常工作或學習過程中,我們可能會經常用到某些sql,建議大家多多整理記錄下這些常用的sql,這樣後續用到會方便很多。筆者在工作及學習過程中也整理了下個人常用的sql,現在分享給你!可能有些sql你還不常用,但還是希望對你有所幫助,說不定某日有需求就可以用到。注 下文分享的sql適用於mysql...

sql語句拼接,字元擷取,sql排序

1 下面的語句會把,從t in 1表查詢的vinleft欄位進行去重,同理t vin 3 做同樣的處理,並且把兩個查詢的結果連在一起 select distinct vinleft from t vin 0 union select distinct vinleft from t vin 1 uni...