2017-06-01 87 views
0

我创建一个函数返回输入客户ID,当客户的全名:无法执行的SQL Server用户自定义函数UDF

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 

是什么错我的代码?我如何运行它?

+1

1.你如何使用功能?函数可以用作查询的SELECT子句的一部分,例如'SELECT dbo.displayName(42)' 2.如果您将NULL与字符串连接起来,则结果为NULL,因此如果“first_name”或“last_name”为空,则结果为NULL。 –

+0

我总是收到此错误 消息195,级别15,状态10,行1 'displayName'不是公认的内置函数名称。 我用不同的名字创建了很多版本 – ejmtv

+1

显示你用来执行函数的代码吗? – TriV

回答

0

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

我必须键入dbo.displayName

+1

当然。您总是必须添加模式名称。 –

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 
相关问题