【发布时间】:2020-03-05 09:02:20
【问题描述】:
如何在函数内部创建变量并从表中选择数据? 当我尝试创建此函数时,我收到错误:
必须声明表变量“@tablename”
这是我的功能:
create function FunctionName (@val1 INT , @val2 INT)
RETURNS @result TABLE
(
Name1 nvarchar(100) not null,
Name2 nvarchar(100) not null,
Name3 nvarchar(100) not null,
Name4 nvarchar(100) not null,
)
AS
BEGIN
DECLARE @tablename nvarchar(max)
SET @tablename = CONCAT('Export_Pivot_',@val1,'_',@val2)
INSERT into @result
SELECT
name1,name2,name3,name4
FROM @tablename
RETURN
END
【问题讨论】:
-
不能有
DECLARE @tablename nvarchar(max) = CONCAT('Export_Pivot_',@val1,'_',@val2)吗? -
还是报错 必须声明表变量“@tablename”。
-
当我输入表格名称时它正在工作,但是当我想动态获取名称时它不工作
-
您不能使用参数而不是表名。没有办法解决这个问题。 SQL 中的表类似于强类型语言中的类型。查询会根据表架构、索引、从表到表甚至随时间变化的统计信息编译为执行计划。
-
将你的sql查询改为动态sql查询什么是动态查询:essentialsql.com/build-dynamic-sql-stored-procedure
标签: sql-server tsql variables stored-functions