2009-08-12 1 views
0

Я пытаюсь понять историческую хранимую процедуру, которую мне нужно исправить. Я нашел это DRVTBL ключевое слово, и я не мог понять, что это значит ??? (Это база данных SQL2000)SQL 2000 - DRVTBL?

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

ответ

3

DRVTBL является псевдонимом для подзапроса, который предшествует ему. Когда вы используете подзапрос в SELECT, как это, вы должны дать ему псевдоним. Если вы удалите DRVTBL, вы получите сообщение об ошибке. Это не должно продолжаться и использоваться в другом месте.

0

Можете ли вы показать полное выражение SQL? Насколько я могу видеть сейчас, DRVTBL не является ключевым словом, а псевдоним, который был предоставлен подзапросу, который используется в предложении FROM.

+0

@Frederik Gheysels, спасибо за быстрый ответ. этот DRVTBL не появляется нигде в SP. – avnic

+0

Когда вы удаляете псевдоним, возможно, что вы получите синтаксическую ошибку и что SQL Server не сможет выполнить запрос. Вы можете изменить имя псевдонима, но более подходящее имя. –

1

DRVTBL, из запроса, который вы опубликовали, выглядит как псевдоним. Работа как временные таблицы в вашем T-SQL Query. SQL Server 2005 имеет немного расширенную версию этой функции, называемую Common Table Expressions.

Пример -

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

Это создаст таблицу, содержащую псевдонимом все Employee S, чье имя начинается с A, и внешний запрос, в свою очередь, выбрать сотрудников с именем Albert.

То же можно записать с помощью КТР, как -

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^