Использовать переменную для создания новой таблицы в ms sql

create proc City_Info @StateRef nvarchar(20) as begin declare @StateCod nvarchar(3); declare @Check int; select @StateCod = StateCod from State_Cod where State_Nam = @StateRef create table C0NCAT(@StateCod' ,'City')(Sno int identity(1,1)) end 

Может ли кто-нибудь сказать, как я могу получить особое имя из столбца и таблицы, используя процедуру в mssql?

Прежде всего это выглядит как классический пример SELECT * FROM sales + @yymm

Это вариант предыдущего случая, когда имеется набор таблиц, которые фактически описывают один и тот же объект. Все таблицы имеют одинаковые столбцы, а имя включает в себя некоторый компонент секционирования, обычно год, а иногда и месяц. Новые таблицы создаются с началом нового года / месяца.

В этом случае писать одну хранимую процедуру в таблицу не реально. Не в последнюю очередь, потому что пользователь может захотеть указать диапазон дат для поиска, поэтому даже с одной процедурой на таблицу вам все равно нужен динамический диспетчер.


Если вы все еще хотите пойти этим путем, вы можете использовать Dynamic-SQL.

 create proc City_Info @StateRef nvarchar(20) as begin declare @StateCod nvarchar(3); declare @Check int; select @StateCod = StateCod from State_Cod where State_Nam = @StateRef; DECLARE @sql NVARCHAR(MAX) = 'create table ' + QUOTENAME(C0NCAT(@StateCod ,'City')) + '(Sno int identity(1,1))'; EXEC sp_executesql @sql end 
Давайте будем гением компьютера.