我正在尝试在 SSMS 中编写一个存储过程,以创建一个表,以及两列,其中表的主题为单个参数。该表必须命名为t
,后跟表的主题。对于列,第一列是自动递增代理键ID字段(和主键),该字段称为表的主题,其后是{ {1}}。
第二列是自然键,它被称为表的主题。例如,要创建一个主题为Student的表,将创建一个名为ID
的表,其中包含一个tStudent
代理键列和一个名为Student的自然键列。我正在尝试使用动态SQL语句(这是我的新手)来做到这一点,并在尝试实现我的自然键列时遇到问题。
StudentID
仅添加ALTER PROC spCreateTable
@subjectOfTable varchar(50)
AS
DECLARE @dynamicSQL nvarchar(500),
@tableName varchar(50),
@tableID varchar(50);
SET @tableName = ('t' + @subjectOfTable);
SET @tableID = (@subjectOfTable + 'ID');
SET @dynamicSQL = 'CREATE TABLE ' + @tableName + ' ( '+ @tableID + ' INT NOT NULL PRIMARY KEY IDENTITY(1,1) ' + @subjectOfTable + ' VARCHAR(50) ) ';
EXEC (@dynamicSQL)
GO
列就可以使其正常工作,但是自然键列tableID
仍然存在语法问题。有人请帮忙!