2017-06-30 1 views
0

Dies ist eine viel kleinere Version einer Abfrage, die grundsätzlich eine Variable der Tabelle benötigt, auf der alles ausgeführt wird.Dynamische SQL-Server-Abfrage mit Variablen (Probleme beim Ausführen)

Wenn ich die Prozedur ausführen bekomme ich die Fehlermeldung:

Msg 156, Ebene 15, Status 1, Zeile 2 falsche Syntax nahe dem Schlüsselwort 'Tabelle'.

alter procedure james_tester 
@tablename nvarchar(200) 
as 

     BEGIN 
     declare @sql nvarchar(max) 

     set @sql = 

     ' 
     select * from ' 

     + @tablename 

      EXECUTE sp_executesql @sql 

     END 

Um dies zu beheben, habe ich versucht, Dinge wie QUOTENAME und spielte mit dem Format, aber nichts scheint noch gearbeitet zu haben.

ausführen james_tester ‚dbo.Calendar Tabelle‘ (Das ist die Tabelle I Abfrage bin zu wollen)

Antwort

1

Das Problem liegt darin, wie Sie Ihre Prozedur aufrufen.

ausführen james_tester 'dbo.Calendar Tabelle'

sollte

james_tester

Daraus ergibt sich die Fehlermeldung 'dbo.Calendar' auszuführen:

Falsche Syntax nahe dem Stichwort 'Tabelle'.

1

Table ist ein Schlüsselwort von SQL Server. Sie konnten es also nicht als Alias ​​ohne [] verwenden. Versuchen Sie, diese

execute james_tester 'dbo.Calendar [table]' 

oder

execute james_tester 'dbo.Calendar t' 

oder

execute james_tester 'dbo.Calendar' 
+0

Dank. Gewählte * in eine Tabelle 'Kalender', wiederholte alle Schritte und alles hat funktioniert! – user4242750

Verwandte Themen