使用由派生于Procedure的参数定义的表名创建表

问题描述 投票:0回答:1

我正在尝试运行创建表的过程,并且表名基于传递给该过程的参数。

这是我的运行方式(它显然不起作用):

Create PROCEDURE [dbo].[Creating_Table]
@number varchar(8)
AS

CREATE TABLE concat(table_name,@number) (
column1 int,
column2 int,
column3 int  
    );
GO

是否有可行的实现方案?

sql sql-server concatenation parameter-passing create-table
1个回答
0
投票

Dynamic SQL将为您提供帮助。

动态创建表是一件危险的事情。

Create PROCEDURE [dbo].[Creating_Table]
@number varchar(8)
AS
BEGIN
    DECLARE @Query VARCHAR(1000),@TableName VARCHAR(100)
    SELECT @TableName = 'Table_'+ @number
    SELECT @Query = '

    CREATE TABLE '+@TableName+' (
        column1 int,
        column2 int,
        column3 int  
     );'

    EXEC (@Query)
END
© www.soinside.com 2019 - 2024. All rights reserved.