我在SQL中有一个自定义函数,如果它在不破坏或停止使用此函数的过程的情况下报告错误,我想返回NULL值。
我该怎么做?
我知道错误处理应该在它自己的函数内部完成,但我应该在其中写什么?
例如: 程序名称为PROC ,函数名称为FUNC
代码:
create dbo.PROC
AS
select column1, column2, FUNC(column3) as funccolumn
from table1
do somthing else
GO
答案 0 :(得分:0)
您可以尝试检查要传递给函数的值是否为数字:
drop procedure sp_test
go
drop function fn_test
go
drop table t_test
go
create table t_test (id int, name varchar(255))
go
insert into t_test values(1,'coco')
insert into t_test values(2,'cucu')
insert into t_test values(2,'10')
insert into t_test values(2,'10.5')
go
create function fn_test(@p decimal(18,6)) returns int
as
begin
return @p * 10
end
go
create procedure sp_test
as
begin
select id, name,
/* when is a number you call the function */
case when isnumeric(name)<>0 then dbo.fn_test(name)
/* if isn't a number you return NULL */
else null end as call_to_fn_test
from t_test
end
go
sp_test