2017-11-13 11 views
0

私はusginfですが、エラーが発生すると解決策を提供できます。動的表にデータを挿入してください

DECLARE @TableName VARCHAR(500); 
SET @TableName = N'CREATE TABLE businessmaster_'+ 
       CONVERT(VARCHAR(10),GetDate()-1,112)+ 
       N' (contentid int,Businessname varchar(50))'; 
print @TableName 



    declare @sql varchar(100)  

    SET @sql = 'INSERT INTO'+ @TableName+' (contentid,Businessname) SELECT top 10 contentid,Businessname FROM businessmaster'; 
EXEC (@sql); 
+0

最初にサイズ制限があります。「@ TableName」、「@ sql」 –

+0

また、INTOの後にスペースがないようです。 – Berger

+1

これは、SQLデータベースのテーブルを操作する方法ではありません。データを日付別の別のテーブルに分割しないでください。 –

答えて

1

あなたがテーブルを作成していない、それはあなたが存在しないテーブルにデータを挿入することができますどのようにあなたがあなたのテーブルを作成していないこの

DECLARE @TableName VARCHAR(500); 

SET @TableName = N'businessmaster_'+CONVERT(VARCHAR(10),GetDate()-1,112); 

EXEC (N'CREATE TABLE '[email protected] +' (contentid int,Businessname varchar(50))') 

print @TableName 
declare @sql varchar(100)  

SET @sql = 'INSERT INTO '+ @TableName+' (contentid,Businessname) SELECT top 10 contentid,Businessname FROM businessmaster'; 
EXEC (@sql) 
+0

私はちょうど答えを書いていましたが、(ほぼ)これと同じになると思いました。 –

+1

これを実行するにはまだエラーが発生しています – user8932855

+0

このクエリは、テーブルが作成されていることを確認します。あなたはどんなエラーを表示していますか?私はそれがあなたの選択したクエリから来ると信じていました。 SET @ sql = 'INSERT INTO' + @ TableName + '(contentid、Businessname)SELECT 1、' 'aa' '';このようにクエリを変更することができます。それは完璧に動作します。 –

1

、次のようになります。

DECLARE @TableName VARCHAR(MAX); 
DECLARE @SQL NVARCHAR(MAX); 
SET @TableName = N'businessmaster_'+ 
       CONVERT(VARCHAR(10),GetDate()-1,112); 

SET @SQL = N' CREATE TABLE '[email protected] + N' (contentid int,Businessname varchar(50))'; 

EXECUTE (@SQL); 

SET @SQL = 'INSERT INTO '+ @TableName+' (contentid,Businessname) SELECT top 10 contentid,Businessname FROM businessmaster'; 

EXECUTE (@SQL); 

Demo

+0

ありがとう仲間 それは役に立ちます – user8932855

+0

@ user8932855助けてくれてうれしいです、それがあなたのために働くなら、あなたはこの答えを受け入れられるとマークすることができます:) – Sami

+0

@ user8932855それは多かれ少なかれ私と同じです。あなたが私のクエリ@@ –

関連する問題