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表中获取特定名称?
答案 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