有圖有真相
❷ 關於oracle存儲過程中的sql拼接,大神進!!!
procere proc_test(
in_id in varchar2,
out_sum out varchar2
) as
begin
execute immediate 'select count(*) from table_name '||in_id into out_sum;
end;
/
sqlplus里調用時:
var out_sum varchar2(10)
exec package_name.proc_test('where id=''XXX'' or 1=1',:out_sum)
print out_sum
❸ mysql使用存儲過程將多條(4條以上)SQL使用 union all 合並
BEGIN
declaresel_sqlVARCHAR(100);
declareg_sqlVARCHAR(100);
declareu_sqlVARCHAR(100);
declaret_nameVARCHAR(100);
DECLAREdoneINTDEFAULTFALSE;
declaremonth__monthwhereflag=1;
=true;
setsel_sql='(selectsum(fee+fee2+fee3)Asfee,monthfromfee_detail_';/*左括弧*/
setg_sql='groupbymonth)';/*右括弧*/
setu_sql='unionall';/*加空格、上同*/
OPENmonth_cursor;
my_loop:loop
FETCHmonth_cursorintot_name;
ifdonethen
leavemy_loop;
endif;
ifs_sqlisnullthen
set@s_sql=CONCAT(sel_sql,t_name,g_sql);/*第一個SQL*/
else
set@s_sql=CONCAT(s_sql,u_sql,sel_sql,t_name,g_sql);/*開始Union後續SQL*/
endif;
endloop;
/*最後執行一次拼接後的SQL語句*/
PREPAREpre_s_sqlfrom@s_sql;
EXECUTEpre_s_sql;
deallocatepreparepre_s_sql;
closemonth_cursor;
END
思路修正,貌似還有不少語法問題,自行修復。
❹ 存儲過程拼接了兩個sql,如何執行;
這個是oracle的存儲過程。你只要在執行時候輸入參數_tableName,v_pkKey ,v_pkValue 的值就行了,它會自動順序執行的。
❺ sql存儲過程中根據判斷拼接sql語句然後執行
不知道你為什麼要這樣寫,,,
if
xxx
sql1
select
count()
xx
from
sql1
end
else
sql2
select
xxxx
from
sql2
xxx
為什麼不採用這種方式?
如果非要拼接,還要定義@變數,
你後續還是要判斷from後面引用哪個,
因為from
後面是沒有
a
or
b的寫法的
❻ sql2005 存儲過程中where後面的 = 或 like 拼接
createprocup_user
@useridchar(20),
@usernamechar(20)
as
BEGIN
select*fromtb_user
WHERE
userid=CASEWHEN@userid<>''THEN@useridELSEuseridEND
ANDusername=LIKE'%'+CASEWHEN@username<>''THEN@usernameELSEusernameEND+'%'
END
注:@userid<>'',某些情況下,可能換成
@useridISNOTNULLAND@userid<>''更好一些。
@username也是一樣。
❼ SQL 執行存儲過程,字元串參數如何拼接
變數直接寫,要連接字元串的話,用
||
這個符號,後面的字元串用單引號引!
例如
變數
V_str
字元串'
select
emp
from
table
where
'
連接後為:
------------------------------------------------
'
select
emp
from
table
where
'
||
V_str
------------------------------------------------
希望可以幫助到你!