使用变量在ms sql中创建新表

时间:2017-08-18 08:21:06

标签: sql-server sql-server-2008 tsql

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中的过程从Column和Make表中获取特定名称?

1 个答案:

答案 0 :(得分:1)

首先,它看起来像 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