@sqliteman
Гейм-дизайнер

Как создать хранимую процедуру где именем таблицы будет параметр?

Пытаюсь создать хранимую процедуру в которой параметром задается имя создаваемой таблицы. Пробовал изначально так (потому что имя это уникальное число):
CREATE PROCEDURE createTableFact
	(
		@name int
	)
AS
CREATE TABLE @name (id int not null IDENTITY (1,1), products varchar(max), weight int, boxes int, suma int, total int)

Но оно ругалось на @name (Неверный синтаксис около "@name". Ожидается ".", IDили QOUTED_ID.)
Изменил на так:
CREATE PROCEDURE createTableFact
	(
		@name varchar(max)
	)
AS
CREATE TABLE @name (id int not null IDENTITY (1,1), products varchar(max), weight int, boxes int, suma int, total int)

Проблема не решилась.
Решил создавать таблицу через SQL запрос в самой программе (пишу на c# используя SqlConnection)
cmd.CommandText = "CREATE TABLE "+affected+" (id int not null IDENTITY (1,1), products varchar(max), weight int, boxes int, suma int, total int)";

Где affected это переменная int с таким именем и присвоенным числом.
В принципе он хавает это, но возвращает ошибку где ему не нравится число.
Пробовал конвертировать в String - эффект тот же.
Уже все голову сломал как это сделать?
  • Вопрос задан
  • 560 просмотров
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
Идея попахивает маразмом, так что хочется побольше узнать о идее и бизнес-логике зачем все это.
А решение есть - такое
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Вы можете динамически создать запрос и выполнить его
DECLARE @sql NVARCHAR(max)=''
SELECT @sql = ' CREATE TABLE '+@name + ...
Exec Sp_executesql @sql
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы