SQL-Variablen deklarieren - SQL-Server
Kann jemand überprüfen über mein statement...
DECLARE @tblName varchar(MAX),
@strSQL varchar(MAX)
SET @tblName ='SELECT DISTINCT o.name as TableName
FROM sysobjects o
JOIN sysindexes x on o.id = x.id
WHERE o.name LIKE ''%empty%'''
SET @strSQL = 'INSERT INTO @tblName VALUES(''trylng'', ''1'')'
EXEC (@strSQL)
mein Fehler ist...
Msg 1087, Ebene 15, Status 2, Zeile 1
Erklären müssen die table-variable "@tblName".
Was ich will zu tun ist, erhalten den Namen der Tabelle auf die variable @tblName
und fügen Sie einige Daten in @strSQL
variable
Zum Beispiel... das Ergebnis in @tblName
ist CustomerInfo
dann in @strSQL
ich werde gehen, um das Ergebnis in @tblName
als meine Tabellennamen in mein Insert-Befehl.
Also die @strSQL
variable wird;
INSERT INTO CustomerInfo VALUES(......)
- mögliche Duplikate von SQL-Variablen Deklarieren
- Mögliche Duplikate von SQL-Variablen Deklarieren
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese aus meiner Antwort zu deiner anderen Frage:
Du bist noch nicht zu erwähnen, die SQL Server-version Sie verwenden. Aber als von SQL Server 2005 oder höher, Sie sollte aufhören
sysobjects
undsysindexes
- verwenden Sie stattdessen die neuesys
schema, das enthält mehr oder weniger die gleichen Informationen, aber leichter verfügbar.Siehe [MSDN: Abfragen des SQL Server-System-Katalog][1] für viel mehr Informationen über das, was verfügbar ist in der neuen
sys
schema und wie man das beste daraus zu machen!Wenn Sie mehrere Variablen deklarieren, die mit einer einzigen Anweisung DEKLARIEREN, Sie setzen nur die Art einmal (am Ende):
DECLARE @tblName, @strSQL varchar(MAX)
. Ein muss geben Sie den Typ der einzelnen Variablen wie:declare @i int, @t varchar(max);
Sollte dies etwas kann wirklich laufen:
Alles im Zitat bedeutet, dass ein string und nicht erwarten, dass sql-server ausgeführt, es als Anweisung, das gleiche gilt für die variable in einen string, Sie können nicht zitieren, es
DSINTINCT
undTOP 1
ist ein bisschen zu viel..... wenn Sie nur 1 Ergebnis, es ist nicht möglich, Duplikate sowieso.....