如何在sql server中调用用户定义函数

时间:2015-05-12 09:21:38

标签: sql-server

我正在SQL Server 2014中创建一个查询

Declare @ff varchar(33)
set @ff='DAY'+cast((SELECT DAY('2011-04-02')) as varchar(2))
print @ff
update CUSTOMER set DAY1='p' where USERId=12
update CUSTOMER set @ff=''+'f'+'' where USERId=15
print @ff
select * from CUSTOMER

它给出的信息是一行有效但我的表中没有发生变化。请帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

这是SQL Server吗?更新将更新变量的内容,而不是表中的列。您不能使用变量来引用列的名称。如果您需要进行类似的动态更新,则必须使用带有EXEC或sp_executesql的动态SQL。

答案 1 :(得分:0)

您不能以您的方式使用变量作为列名,因此第二次更新需要使用动态sql语句完成,您可以将变量注入查询字符串,如下所示:

DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'update CUSTOMER set ' + @ff + ' = ''f'' where USERId=15'
EXEC sp_executesql @sql

将变量@ff定义为:

Declare @ff nvarchar(33)
set @ff='DAY'+cast((SELECT DAY('2011-04-02')) as varchar(2))

这会将列DAY2更新为f

的值为userid = 15

然而,你可以摆脱@ff变量并直接构建查询字符串:

SET @SQL = CONCAT(N'update CUSTOMER set DAY', DAY('2011-04-02'), ' = ''f'' where USERId=15')