0

有没有办法将字符串发送到 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  
4

1 回答 1

1

您不能在函数中使用动态 SQL,也不能从用户定义函数中的任何表中插入、更新或删除(请查看Marc 给出的此链接),对于您的要求,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

并运行该SP

EXEC [TEST] @id=5, @table_name='tablename'  
于 2013-11-27T10:36:45.313 回答