2017-05-18 10 views
0

に挿入が、それは宣言一時テーブルとは、私は私のクエリで一時テーブルを宣言呼び出そうクエリ

が@MDLTable「テーブル変数を宣言しなければなりません 『と言います』。」

ここに私のコード:

DECLARE @dbname AS NVARCHAR(50); 
SELECT @dbname = DB_NAME(); 
PRINT @dbname; 
DECLARE @sql NVARCHAR(1000) ; 
DECLARE @MDLTable AS TABLE(MDLID BIGINT, MDLRLVR INT) 

SET @sql = 'INSERT INTO ' + @MDLTable + ' (MDLID, MDLRLVR) 
SELECT DISTINCT a.MDLID, a.MDLRLVR FROM ' + @dbname + '.dbo.EUSYSRSRRL a 
INNER JOIN ' + @dbname + '.dbo.EUSYSIROE b ON a.MDLID = b.MDLID 
INNER JOIN ' + @dbname + '.dbo.EUSYSEAPML c ON b.EAPMLID = c.EAPMLID 
WHERE c.REEID = ' + CONVERT(nvarchar(50),6) + '' 
exec (@sql); 
+0

あなたのコードは、MySQLではありません。 MySQLを実際に使用している場合は、SQL Serverの代わりにSQL Serverを使用する方法を学習する必要があります。 –

答えて

1

あなたはinsert . . . execを使用してこれを行うことができます。

SET @sql = ' 
SELECT DISTINCT a.MDLID, a.MDLRLVR 
FROM ' + @dbname + '.dbo.EUSYSRSRRL a JOIN 
    ' + @dbname + '.dbo.EUSYSIROE b 
    ON a.MDLID = b.MDLID JOIN 
    ' + @dbname + '.dbo.EUSYSEAPML c 
    ON b.EAPMLID = c.EAPMLID 
WHERE c.REEID = ' + CONVERT(nvarchar(50), 6) + ''; 

INSERT INTO @MDLTable (MDLID, MDLRLVR) 
    exec(@sql); 
+1

おそらくあなたは 'INSERT INTO @MDLTable(MDLID、MDLRLVR)exec(@ sql);を意図していたでしょうか? –

+0

私はビットを微調整します。 'INSERT INTO @MDLTable(MDLID、MDLRLVR) exec(@ sql);'。ありがとうございます。 – Hazim

関連する問題