T-SQL函数抛出错误

时间:2017-05-10 17:27:29

标签: sql-server function tsql exception return

你好,我有一个函数,并且引入了一个带字母或数字的变量,如果变量是一个字母,它需要引起错误并返回0,或者如果是数字则返回1. / p>

在T-SQL中我有一个程序,最终将调用此函数来检查是一个数字:

IF  dbo.VALIDNUMBER(@sTxpX) != 0 AND @sTxpX IS NOT NULL

变量@sTxpX保持一个值为' T'所以我知道它需要从函数返回0因为无效是一个数字,但我没有得到正确的函数来构建它,我将在这里感谢一些帮助。

CREATE FUNCTION DBO.VALIDNUMBER (@sTextStr VARCHAR(4000)) RETURNS  BIT AS
 BEGIN
DECLARE @bValidNumberStr BIT = 1; DECLARE @nTest BIGINT;

    SET @nTest = CAST(@sTextStr AS numeric(38, 10)) + 1;
    RETURN @bValidNumberStr;

EXCEPTION
    WHEN OTHERS THEN
        SET @bValidNumberStr = 0;
    RETURN @bValidNumberStr;
END;

2 个答案:

答案 0 :(得分:3)

为什么不能使用内置的SQL函数?它更快,你不需要疯狂地提出解决方案。

在您的程序中执行以下操作:

DECLARE @isNumber bit;

IF (ISNUMERIC(@sTextStr) = 1) 
    BEGIN 
        SET @isNumber = 1
    END
ELSE
    BEGIN
        SET @isNumber = 0

        RAISERROR(15600, 16, 20, 'That was not a number')
    END

您可以稍后将@isNumber变量传回给用户。

答案 1 :(得分:2)

尝试此功能:

CREATE function [dbo].[VALIDNUMBER]
(@strText VARCHAR(4000))
RETURNS BIT
AS
BEGIN
DECLARE @Return as bit
IF TRY_CAST(@strText AS NUMERIC(38,10)) IS NOT NULL BEGIN
    SET @Return = 1
END ELSE BEGIN
    SET @Return = 0
END

RETURN @Return

END