【发布时间】:2015-03-26 18:33:02
【问题描述】:
所以,我正在制作一个“时间表”表。对于该程序在大学环境中创建的每个时间表,我都需要一个新表。所以,我需要一个用于 SPRING2015、FALL2015 等。例如,这就是我想要的表名称。我们有一个时间表被输入到一个基本的 SCHEDULE 表中。存储过程必须在表中说“FALL2015”并使表称为“FALL2015”。我还没有找到一个很好的方法来做到这一点。我似乎只能制作一个临时表或具有静态名称的表。我们需要将所有内容从 SCHEDULE 表复制到在同一过程中创建的“FALL2015”表。那不是问题。我只需要找出将变量传递给作为表名的过程的方法。我似乎找不到好方法。
CREATE PROCEDURE CreateScheduleTable
@TableName VARCHAR(255)
AS
BEGIN
CREATE TABLE @TableName (
ClassID INT,
SectionNum VARCHAR(2) NOT NULL,
StartTime INT,
EndTime INT,
Mon BIT,
Tues BIT,
Wed BIT,
Thurs BIT,
Fri BIT,
Sat BIT,
Sun BIT,
TeacherID VARCHAR(6),
RoomID INT,
CONSTRAINT pk_Class PRIMARY KEY (ClassID, SectionNum)
)
INSERT INTO @TableName
(ClassID, SectionNum, StartTime, EndTime, Mon, Tues, Wed, Thurs, Fri, Sat, Sun, TeacherID)
SELECT ClassID, SectionNum, StartTime, EndTime, Mon, Tues, Wed, Thurs, Fri, Sat, Sun, TeacherID
FROM SCHEDULE
END
GO
-- End Procedure CreateScheduleTable --
EXEC CreateScheduleTable 'Hi'
SELECT * FROM #TempSchedule
【问题讨论】:
-
你为什么要创建这么多表?只需一张表,其中一列表示年份,一列表示季节。然后你有一张表来管理和报告。如果您必须按照自己的方式进行操作,请使用动态 SQL。
标签: sql sql-server stored-procedures sql-server-2012