2017-05-18 2 views
0

Ich versuche temporäre Tabelle in meiner Anfrage zu nennen erklären, aber es sagtDeclare temporäre Tabelle, und legen Sie in in Abfrage

@MDLTable „Muss die Tabelle Variable deklarieren‚‘.“

Hier meine Codierung:

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

Ihr Code ist nicht MySQL. Wenn Sie MySQL wirklich verwenden, sollten Sie lernen, es anstelle von SQL Server zu verwenden. –

Antwort

1

Sie können dies tun, indem insert . . . exec mit:

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

Vielleicht beabsichtigten Sie 'INSERT INTO @ MDLTable (MDLID, MDLRLVR) exec (@sql);'? –

+0

Ich zwicke ein bisschen, 'INSERT INTO @ MDLTable (MDLID, MDLRLVR) Exec (@ sql);'. Es funktioniert dank. – Hazim

Verwandte Themen