存储过程中参数是动态的,需要判断是否为空

例子:select a,b.c from xx ,如果前端传递过来的参数只有a字段的值,那么sql变为:select a,b,c from xx group by a 。B和C赋值为0;如果前端传递过来的参数只有a,b字段有值,那么sql变为:select a,b,c from xx group by a,b 。C赋值为0;以此类推。(公司、成本中心等等就是前端会传过来的参数。)
group by a,b 。 b在为什么值得时候group by a,b 跟 group by a 相等。

1、新建一个html文件,命名为test.html。

2、在test.html文件内,使用function声明一个函数,str为函数的参数。

3、在is_e()函数内,首先使用if语句进行null、空、undefined的情况判断,如果符合,则弹出“内容为空”的提示。

4、在is_e()函数内,再使用正则表达式,将空白字符、空格、制表符、换页符等替换为空。

5、再使用if语句判断上一步处理后的数据是否为空,如果为空,则弹出“内容为空”的提示。

6、在is_e函数外,定义一个变量str,用于保存要判断的数据,例如,这里设置str变量为一个空字符,使用is_e()函数进行判断。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23

直接上代码: 你自己把grop by 加上去,我就不全部写完了。

测试:

结果:

换条件再测试:

结果:


代码:

create or replace procedure test_a(a varchar2,b varchar2,c varchar2) is

         q varchar2(100);

         w varchar2(100);

         e varchar2(100);

         d varchar2(100);

       begin

         if a is null then q:=0;

            else q:=a;

         end if;

         if b is null then w:=0;

            else w:=b;

         end if;

         if c is null then e:=0;

            else e:=c;

         end if;

         d:='select '||q||','||w||','||e||' from xx';

          dbms_output.put_line(d);

       end

;

本回答被提问者采纳
第2个回答  2015-10-14
create procedure [dbo].P_Test
(
@test varchar(10) = null
)
as
begin
if (@test = 'full') or (@test is null)
begin
sql 语句
end
else if (@test = 'row')
begin
sql 语句
end
end

GO