无法在SQL Server中执行用户定义的函数UDF

时间:2017-06-01 09:07:08

标签: tsql sql-server-2012

我正在创建一个函数,在输入客户ID时返回客户的全名:

CREATE FUNCTION displayName
(
    @customer_id int
)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @name varchar(50)
    SELECT @name = (SELECT name_first + ' ' + name_last AS FULL_NAME FROM DT_CUSTOMERS WHERE customer_id = @customer_id)
    RETURN @name
END
GO

我的代码有问题吗?我怎么运行它?

2 个答案:

答案 0 :(得分:1)

通常的做法是定义要在哪个DB中运行查询(您可能位于错误的数据库中,您没有任何权限?)以及要添加到哪个模式: 当这样执行时,它应该可以工作。

USE
databasename_here
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION dbo.displayName
(
    @customer_id int
)
RETURNS varchar(50)
AS
BEGIN
    DECLARE @name varchar(50)
    SELECT @name = (SELECT name_first + ' ' + name_last AS FULL_NAME FROM DT_CUSTOMERS WHERE customer_id = @customer_id)
    RETURN @name
END
GO

应按如下方式执行:

SELECT 
   dbo.displayName(column_which_contains_id) 
from db.schema.table

答案 1 :(得分:0)

没有用户,它在我的情况下不起作用。

我必须输入dbo.displayName