Oracle存储过程where语句使用变量
存储过程中,传入一个参数V_DQDM。要求V_DQDM长度是6位时,语句为updatetable1.....wheredqdm=V_DQDM。当V_DQDM长度小于6位时...
存储过程中,传入一个参数V_DQDM。要求V_DQDM长度是6位时,语句为update table1 ..... where dqdm=V_DQDM 。当V_DQDM长度小于6位时,语句为update table1 ..... where dqdm like V_DQDM||'%'。
因为语句较多,可不可以像java程序里一样,使用一个变量,用拼字符串的方式,实现一个where 语句。
如java 中,String wheSql=""; if(v_dqdm.length()>=6){wheSql=" where dqdm =' "+v_dqdm+" ' "}else{wheSql=" where dqdm like ' "+v_dqdm+ " %' "}
"update table ...... "+wheSql ;
求一个存储过程完整的写法。谢谢 展开
因为语句较多,可不可以像java程序里一样,使用一个变量,用拼字符串的方式,实现一个where 语句。
如java 中,String wheSql=""; if(v_dqdm.length()>=6){wheSql=" where dqdm =' "+v_dqdm+" ' "}else{wheSql=" where dqdm like ' "+v_dqdm+ " %' "}
"update table ...... "+wheSql ;
求一个存储过程完整的写法。谢谢 展开
1个回答
展开全部
create PROCEDURE p_update
(V_DQDM in varchar2(6))
as
begin
if length(V_DQDM)=6
then
update table1 ..... where dqdm=V_DQDM;
commit;
else
update table1 ..... where dqdm like V_DQDM||'%';
commit;
end if;
end p_update;
类似这么写
追问
不是这个意思。有很多很多的update语句。希望把where语句作为一个变量来用。
这样update语句只要写一个就行了。你这样要写两个。
就像上面写的java的例子一样。
追答
create PROCEDURE p_update
(V_DQDM in varchar2)
as
v_str varchar2(200);
begin
select case when length(V_DQDM<6) then 'dqdm like V_DQDM||'%'' else 'dqdm=V_DQDM' into v_str from dual;
execute immediate 'update table1 ..... where '||v_str|| '';
end p_update;
没试过这种写法,可能%号那还需要转义,有点麻烦,只能给你提供点思路了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询