SQL Server 2000错误处理

时间:2013-06-20 12:03:08

标签: tsql sql-server-2000

我在SQL中有一个自定义函数,如果它在不破坏或停止使用此函数的过程的情况下报告错误,我想返回NULL值。

我该怎么做?

我知道错误处理应该在它自己的函数内部完成,但我应该在其中写什么?

例如: 程序名称为PROC ,函数名称为FUNC

代码:

create dbo.PROC
AS
 select column1, column2, FUNC(column3) as funccolumn
from table1
do somthing else
GO

1 个答案:

答案 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