Erklären müssen die Skalare variable

Schrieb ich das SQL in einer gespeicherten Prozedur aber nicht funktioniert,

declare @tableName varchar(max) = 'TblTest'
declare @col1Name varchar(max) = 'VALUE1'
declare @col2Name varchar(max) = 'VALUE2'
declare @value1 varchar(max)
declare @value2 varchar(200)

execute('Select TOP 1 @value1='+@col1Name+', @value2='+@col2Name+' From '+ @tableName +' Where ID = 61')

select @value1

execute('Select TOP 1 @value1=VALUE1, @value2=VALUE2 From TblTest Where ID = 61')

Diese SQL-wirft diesen Fehler:

Erklären muß, die Skalare variable "@Wert1".

Ich bin die Generierung der SQL dynamisch und ich will den Wert in eine variable. Was soll ich tun?

  • Warum verwenden Sie dynamische Abfragen ? Ich sehe keinen Grund für die Verwendung von dynamischen Abfragen für Ihre Frage.
  • Ich weiß nicht, Tabellenname und Spaltenname.Also ich bin erstellen einer Abfrage dynamisch.
  • Also alle diese Quell-Tabellen haben mindestens drei Spalten: VALUE1, VALUE2 und ID ? Auch diese Spalten haben die gleichen Datentypen ? Auch die Zahl der in diesen Tabellen ist variabel oder konstant ?
  • Ja, Alle dieser Spalten-Typ ist varchar. Es ist nicht nötig, um die Konvertierung oder casting.
  • Nicht dumm nach unten in Frage, weil Sie denken, es wird es einfacher machen. Wenn die Tabellen-und Spaltennamen dynamisch sind, umfassen, dass ein Teil des Codes zu.
  • Außerdem, warum müssen Sie TOP-1? Glauben Sie wirklich, haben Sie mehrere Zeilen mit ID = 61? Wenn dem so ist, dann macht Sie zwei Gründe, warum das ist eine schreckliche und irreführend Spalte name.
  • Dies ist Beispiel-Abfrage, Bitte glaube nicht, dass dieses Thema

Schreibe einen Kommentar