sql-server - 从过程中调用函数
问题描述
我不能从一个过程中调用我的函数,我不明白为什么。该功能正在工作,但在程序中却没有。
我尝试编写一些代码来检查用户名是否已存在于我创建的表中。
--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”不是可识别的内置函数名称。
解决方案
创建和调用函数时必须使用模式前缀。
所以将创建更改为:
CREATE FUNCTION dbo.Fun_Exists_Username
并在调用它时,使用它:
SELECT @Boolean = dbo.Fun_Exists_Username(@UserName)
推荐阅读
- unix - 使用键/连接列中的重复条目执行完全外连接的命令
- rascal - 如何在流氓中以毫秒为单位获取当前时间
- math - OpenGL:使用四元数从位置和方向获取lookAt中心
- matlab - 表中的散点图 - Matlab
- powershell - 使用 Out-GridView 选择对象
- jquery - 使用 JSON & JQUERY 返回数据
- google-colaboratory - 如何在上传的笔记本上保留单元格输出?
- excel - 1004 错误:无法获取 WorksheetFunction 类的 StDev_S 属性
- php - Yii2 验证,允许几种不同的格式
- c# - C# LINQ 查询导致 DB2 错误 CASE 表达式或 DECODE 函数的结果表达式的数据类型不兼容