2009-08-12 8 views
0

Ich versuche eine historische gespeicherte Prozedur zu verstehen, die ich beheben muss. Ich fand diese DRVTBL Schlüsselwort, und ich konnte nicht herausfinden, was es bedeutet ??? (Dies ist eine SQL2000 Datenbank)SQL 2000 - DRVTBL?

SELECT ... 
FROM (  
     ...) 
) DRVTBL 

Antwort

3

DRVTBL ist ein Alias ​​für die Unterabfrage, die es vorangeht. Wenn Sie eine Unterabfrage innerhalb eines SELECT wie folgt verwenden, müssen Sie ihr einen Alias ​​geben. Wenn Sie DRVTBL entfernen, erhalten Sie einen Fehler. Es muss dann nicht weitergehen und irgendwo anders verwendet werden.

0

Können Sie die komplette SQL-Anweisung zeigen? Soweit ich gerade sehen kann, ist DRVTBL kein Schlüsselwort, sondern ein Alias, der der Unterabfrage zugewiesen wurde, die in Ihrer FROM-Klausel verwendet wird.

+0

@Frederik Gheysels, danke für die schnelle Antwort. Dieses DRVTBL erscheint nirgendwo sonst im SP. – avnic

+0

Wenn Sie den Alias ​​entfernen, erhalten Sie möglicherweise einen Syntaxfehler, und SQL Server kann die Abfrage nicht ausführen. Sie können den Namen des Alias ​​jedoch in einen geeigneteren Namen ändern. –

1

DRVTBL, aus der Abfrage, die Sie gepostet haben, sieht aus wie ein Alias. Die funktionieren wie temporäre Tabellen in Ihrer T-SQL-Abfrage. SQL Server 2005 verfügt über eine etwas erweiterte Version dieser Funktionalität mit der Bezeichnung Common Table Expressions.

Ein Beispiel -

SELECT * 
FROM 
    (
     SELECT 
      Id, 
      Name 
     FROM Employee 
     WHERE Name LIKE 'A%' 
    ) EmployeeA 
WHERE EmployeeA.Name = 'Albert' 

Dies wird eine aliased Tabelle erstellen, die alle enthält Employee s, dessen Namen beginnt mit A und die äußeren Abfrage, die wiederum wählt die Mitarbeiter mit dem Namen Albert.

Gleiche geschrieben werden können, unter Verwendung von CTE als -

WITH EmployeeA AS 
(
    SELECT 
     Id, 
     Name 
    FROM Employee 
    WHERE Name LIKE 'A%' 

) 
SELECT * FROM EmployeeA WHERE EmployeeA.Name = 'Albert'