gpt4 book ai didi

sql-server - 如何在UDF标量函数中将表名作为参数传递?

转载 作者:行者123 更新时间:2023-12-03 08:16:11 27 4
gpt4 key购买 nike

create function test
(
@tblName as sysname,
@category as varchar(50)
)
returns int
as
begin
declare @val2 as int
select @val2=val1 from @tblName where val1=@tblName
return @val2
end

该查询出了什么问题,它引发了以下错误

Msg 1087, Level 15, State 2, Procedure test, Line 11
Must declare the table variable "@tblName".

最佳答案

您无法参数化表名称。您将需要使用动态SQL(无论如何,这不是函数中允许的)。

您可能可以使用UNION ALL固定表列表和常量的View或CTE来完成您想做的任何事情。您发布的代码毫无意义
(如果称为@val2的表在@tblName列中包含相同的值,您希望@tblName具有与val1相同的值吗?)但类似

;WITH cte AS
(
SELECT 'table1' AS table_name, val1
FROM table1
UNION ALL
SELECT 'table2' AS table_name, val1
FROM table2
)
select @val2=val1 from cte where table_name=@tblName and val1 = @tblName

关于sql-server - 如何在UDF标量函数中将表名作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4905860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com