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 に答える