我在下面这个函数中定义了一个返回值,按照下面的执行后。函数的返回值是null。问题是我不想让这个返回值是null,可不可以在它为null 的情况下给一个默认的值。CREATE OR REPLACE FUNCTION tmp_sel(v_na in int)
RETURN number
as
var_tmp number default 20;
BEGIN
select 100 into var_tmp from dual where 1>2;
return var_tmp;
END; select tmp_sel(12) aa from dual;
RETURN number
as
var_tmp number default 20;
BEGIN
select 100 into var_tmp from dual where 1>2;
return var_tmp;
END; select tmp_sel(12) aa from dual;
return前加个
if var_tmp is null then var_tmp:=0; end if;
不就好了
这个根本不可能有值return nvl(var_tmp, 20);
RETURN number
as
var_tmp number default 20;
BEGIN
select 100 into var_tmp from dual where 1>2;
return NVL(var_tmp,'默认值');
END;
RETURN number
as
var_tmp number default 20;
BEGIN
select 100 into var_tmp from dual where 1>2; if var_tmp is null then var_tmp:=110; end if;
-- return nvl(var_tmp,300); return var_tmp;
END; select tmp_sel(12) aa from dual;
这句话,var_tmp 变量就算没有成功赋值。那var_tmp 应该是默认值,怎么会是null值?
RETURN number
as
var_tmp number default 20;
BEGIN
select 100 into var_tmp from dual where 1>2; if var_tmp is null then var_tmp:=110; end if; return var_tmp;
EXCEPTION
WHEN OTHERS THEN
return 0;
END; 是因为这个函数抛no data found异常了没捕获。
var_tmp NUMBER := 20;
BEGIN SELECT 100 INTO var_tmp FROM dual WHERE 1 > 2; IF var_tmp IS NULL THEN
var_tmp := 20;
END IF;
RETURN nvl(var_tmp, 20);EXCEPTION
WHEN no_data_found THEN
RETURN nvl(var_tmp, 20);
END;