2017-08-18 15 views
2
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テーブルから特定の名前をフェッチできますか?変数を使用してmsテーブルに新しいテーブルを作成する

は、すべての

答えて

1

まずそれは、SELECT * FROM sales + @yymm

これは実際には同じエンティティを記述しない表のスイートがあり、以前の場合、の変化であるの古典的な例のように見えます。すべての表には同じ列があり、名前にはパーティション化コンポーネントが含まれます(通常は年、時には月も含まれます)。新しい年/月が始まると、新しい表が作成されます。

この場合、テーブルごとに1つのストアドプロシージャを記述することは実際には実現できません。ユーザーが検索の日付範囲を指定する場合があるため、テーブルごとに1つのプロシージャを使用する場合でも、依然として動的ディスパッチャが必要です。


あなたはまだあなたがダイナミック-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 
+0

ありがとうございました.... –

関連する問題