我正在尝试运行创建表的过程,并且表名基于传递给该过程的参数。
这是我的运行方式(它显然不起作用):
Create PROCEDURE [dbo].[Creating_Table]
@number varchar(8)
AS
CREATE TABLE concat(table_name,@number) (
column1 int,
column2 int,
column3 int
);
GO
是否有可行的实现方案?
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