Я пытаюсь написать хранимую процедуру в SSMS , которая создает таблицу вместе с двумя столбцами с темой таблицы в качестве единственного параметра. Таблица должна иметь имя t
, за которой следует тема таблицы. Что касается столбцов, то первый столбец представляет собой поле с суррогатным ключом с автоинкрементом * (и первичный ключ ), которое названо в качестве субъекта таблицы, за которым следует ID
.
Второй столбец - это естественный ключ, который называется темой таблицы. Например, таблица, которая будет создана с темой «Студент», создаст таблицу с именем tStudent
, с столбцом суррогатного ключа StudentID
, а также столбцом естественного ключа с именем «Студент». Я пытаюсь сделать это с помощью динамического оператора SQL (который я новичок) и продолжаю сталкиваться с проблемами при попытке реализовать мой столбец с естественным ключом.
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
, но у меня по-прежнему возникают проблемы с синтаксисом в столбце с естественным ключом subjectOfTable
. Кто-нибудь, пожалуйста, помогите!