Sql server 从过程调用函数

Sql server 从过程调用函数,sql-server,stored-procedures,stored-functions,Sql Server,Stored Procedures,Stored Functions,我不能从过程调用我的函数,我不明白为什么。 该函数正在工作,但在某个过程中不工作 我尝试编写一些代码来检查我创建的表中是否已经存在用户名 --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

我不能从过程调用我的函数,我不明白为什么。 该函数正在工作,但在某个过程中不工作

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

--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
我得到这个错误:

Msg 195,级别15,状态10,过程Usp_用户名,第7行[批处理开始第24行]“Fun_Exists_Username”不是可识别的内置函数名


创建和调用函数时,必须使用架构前缀

因此,将创建更改为:

CREATE FUNCTION dbo.Fun_Exists_Username
调用时,请使用以下命令:

SELECT @Boolean = dbo.Fun_Exists_Username(@UserName)

创建和调用函数时,必须使用架构前缀

因此,将创建更改为:

CREATE FUNCTION dbo.Fun_Exists_Username
调用时,请使用以下命令:

SELECT @Boolean = dbo.Fun_Exists_Username(@UserName)

你收到错误信息了吗?你怎么知道它不工作了?你真的是说mysql吗?它看起来不像,而且workbench也不喜欢它。在SQL Server中,您必须使用架构名称完全限定函数,因此如果
dbo
是您的默认方案,那么您可以使用
select@Boolean=dbo.Fun\u Exists\u Username(@Username)
调用它,是否收到错误消息?你怎么知道它不工作了?你真的是说mysql吗?它看起来不像,而且workbench也不喜欢它。在SQL Server中,您必须使用架构名称完全限定函数,因此如果
dbo
是您的默认方案,那么您可以使用
select@Boolean=dbo.Fun\u Exists\u Username(@Username)调用它
事实上,您应该为所有对象引用创建一个数据库。事实上,您应该为所有对象引用创建一个数据库。