Hallo,
ich habe Probleme mit einer Tabellenvariablen.
Was möchte ich:
In der Tabelle DM_DIMENSION stehen in der Spalte dm_TABLENAME Namen von Tabellen
in der Datenbank DIMLOAD. Die Anzahl der Tabellen ist variabel. Alle Tabellen
haben aber min. die Felder Membername und Alias. Jetzt möchte den Inhalt dieser
Felder aller Tabellen in die Tabellenvaribalen schreiben und ausgeben.
Leider erhalte ich folgende Fehlermeldung:
Meldung 137, Ebene 15, Status 2, Zeile 21
Die "@MemTable"-Skalarvariable muss deklariert werden.
SQL-Code:
USE [dimload]
SET NOCOUNT
ON
DECLARE @
SQL NVARCHAR(4000)
DECLARE @TABNAME
NVARCHAR(255)
DECLARE @MemTable
TABLE
(
MEMBERNAME
NVARCHAR(255),
ALIAS
NVARCHAR(255)
)
DECLARE c
CURSOR LOCAL
FOR SELECT dm_TABLENAME
FROM dbo.DM_DIMENSION
OPEN c
FETCH NEXT
FROM c
INTO @TABNAME
WHILE @@Fetch_status = 0
BEGIN
SET @
SQL = '
INSERT INTO @Table SELECT membername as MEMBERNAME, alias_1 as ALIAS '+
'
FROM '+@TABNAME+'
WHERE (alias_1<>''
X''
) and (sdata<>''
SHAREDATA''
)'
EXEC sp_executesql @
SQL,@MemTable
/* hier möchte ich die Tabellenvariable als
Paramter für @Table übergeben */
FETCH NEXT
FROM c
INTO @TABNAME
END
CLOSE c
DEALLOCATE c
SET NOCOUNT
OFF
SELECT membername,
count(alias)
AS anzahl
FROM @MemTable
GROUP BY alias, membername