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)调用它
事实上,您应该为所有对象引用创建一个数据库。事实上,您应该为所有对象引用创建一个数据库。