有没有办法将字符串发送到T-SQL函数并将该字符串用作“表”
例如
CREATE FUNCTION [dbo].[TEST] ( @id int, **@table_name** nvarchar(50))
RETURNS @mytables TABLE
(
id int,
values nvarchar(50)
)
AS
BEGIN
INSERT @mytables
SELECT id, values FROM **@table_name**
RETURN
END
答案 0 :(得分:1)
您不能在函数中使用动态SQL,也不能在用户定义的函数中的任何表中插入,更新或删除(请查看Marc给出的link ),根据您的要求,SP是这样的最佳解决方案:
CREATE PROCEDURE [dbo].[TEST] (@id int, @table_name nvarchar(50))
AS
BEGIN
declare @strSQL NVARCHAR(MAX)
set @strSQL = ' SELECT ' + cast(@id as varchar(20)) + ', Name from ' + @table_name
exec(@strSQL)
END
并按
运行该SPEXEC [TEST] @id=5, @table_name='tablename'