Oracle过程将所有输入变量设置为大写

时间:2018-07-12 01:44:53

标签: sql oracle plsql

我有一种情况,需要在处理之前将Oracle SP的所有输入参数转换为大写:-

procedure Name (
v_Param1 in number,
v_Param2 IN varchar2,
v_Para3 IN VARCHAr2,
v_Param4 IN VARCHAr2,
v_MID IN VARCHAr2)

输入可以是小写,大写或驼峰式输入,但我需要将其与大写表中的记录匹配,这在递归调用中是数据库端的一项昂贵操作。 有没有一种方法可以立即转换这些值,以便将输入参数转换为大写。

2 个答案:

答案 0 :(得分:1)

您可以声明并设置新变量:

procedure Name ( v_Param1 in number, v_Param2 IN varchar2, v_Para3 IN VARCHAr2, v_Param4 IN VARCHAr2, v_MID IN VARCHAr2
               )
as
    v_param2_upper varchar2(4000);
    v_param3_upper varchar2(4000);
    v_param4_upper varchar2(4000);
    v_param5_upper varchar2(4000);
begin
    v_param2_upper := upper(v_param2);
    v_param3_upper := upper(v_param3);
    v_param4_upper := upper(v_param4);
    v_param5_upper := upper(v_param5);

    . . .
end;

但是,我不知道字符串的大小写将如何导致递归调用。

答案 1 :(得分:0)

通过直接在变量上使用上/下函数,您可以实现以下目的:-

procedure Name (
   v_Param1 in number,
   v_Param2 IN varchar2,
   v_Para3 IN VARCHAr2,
   v_Param4 IN VARCHAr2,
   v_MID IN VARCHAr2)
as BEGIN
   v_Param2 := upper(v_Param2);
   v_Para3 := upper(v_Para3);
   v_Param4 := upper(v_Param4);
   v_MID := upper(v_MID);
......
END;