从过程中调用函数

问题描述 投票:0回答:2

我无法从过程中调用我的函数,我不明白为什么。 该功能可以正常工作,但在程序中却不能正常工作。

我尝试编写一些代码来检查用户名是否已存在于我创建的表中。

--Boolean Function If Username Exists Or Not

CREATE FUNCTION Fun_Exists_Username
    (@Username_to_check VARCHAR(10))
RETURNS INT 
AS
BEGIN
    DECLARE @Boolean BIT

    IF EXISTS (SELECT UserName FROM UTBL_Players WHERE @Username_to_check = UserName)
        SET @Boolean = 1
     ELSE 
        SET @Boolean = 0

     RETURN @Boolean
END

-- Procedure that get username and chek it
CREATE PROCEDURE Usp_Username
    @UserName VARCHAR(10)
AS
BEGIN
    DECLARE @Boolean INT

    SELECT @Boolean = Fun_Exists_Username(@UserName)

    IF @Boolean = 0
        PRINT 'This user name already exists.
            You can use this user name: '   -- function that returns a free username
    ELSE 
        PRINT 'This user name is fine'
END

我收到此错误:

消息 195,级别 15,状态 10,过程 Usp_Username,第 7 行 [批处理开始第 24 行]“Fun_Exists_Username”不是可识别的内置函数名称。

sql-server stored-procedures stored-functions
2个回答
2
投票

创建和调用函数时必须使用模式前缀。

因此将创建更改为:

CREATE FUNCTION dbo.Fun_Exists_Username

调用它时,使用这个:

SELECT @Boolean = dbo.Fun_Exists_Username(@UserName)

0
投票

如果存在(从 UTBL_Players 中选择用户名,其中 @Username_to_check = 用户名)

这个 if 语句应该是

如果存在(从 UTBL_Players 中选择用户名,其中用户名 = @Username_to_check)

© www.soinside.com 2019 - 2024. All rights reserved.