有图有真相
❷ 关于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
------------------------------------------------
希望可以帮助到你!