创建SQL函数以创建多个表

时间:2018-04-19 14:54:03

标签: sql tsql sql-server-2014

我目前正在将SAS流程迁移到SQL。在SAS流程中,我利用宏来创建多个表。

我正在尝试利用SQL中的CREATE FUNCTION函数来模仿这个过程,但是我被卡住了。我有三个参数,服务器名称,新表的名称和应该从中选择的表。我不确定我应该指定什么,因为我不想返回任何内容,只需创建表格。

CREATE FUNCTION dbo.functionname (@server VARCHAR(250), @name VARCHAR(250), @table VARCHAR(250))
RETURN (???)
AS BEGIN
SELECT *
INTO @server.dbo.@nm
FROM @table
RETURN
END

这是我到目前为止所提出的。我的SELECT语句实际上不是*,我只是为了这个问题而简单地说。

更新:在这种情况下,使用存储过程不是一个选项,因为权限受到限制。

1 个答案:

答案 0 :(得分:1)

您可以按如下方式创建动态SQL脚本

declare @newtable sysname = 'T003', 
        @sourcetable sysname = 'sys.tables'

declare @sql nvarchar(max)
set @sql = N'select * into ' + @newtable + ' from ' + @sourcetable + ';'
set @sql = @sql + N'select * from ' + @newtable 
exec sp_executesql @sql

然后您可以在存储过程中使用它 要从新表返回数据,必须先知道表类型。在这种情况下,它是不可能的,因此开发人员无法创建函数返回类型 或创建一个函数只是为了创建表并将数据插入其中。但是回归失败或成功等等 然后再次使用动态SQL从新表中选择