Я пытаюсь понять историческую хранимую процедуру, которую мне нужно исправить. Я нашел это DRVTBL ключевое слово, и я не мог понять, что это значит ??? (Это база данных SQL2000)SQL 2000 - DRVTBL?
SELECT ...
FROM (
...)
) DRVTBL
Я пытаюсь понять историческую хранимую процедуру, которую мне нужно исправить. Я нашел это DRVTBL ключевое слово, и я не мог понять, что это значит ??? (Это база данных SQL2000)SQL 2000 - DRVTBL?
SELECT ...
FROM (
...)
) DRVTBL
DRVTBL является псевдонимом для подзапроса, который предшествует ему. Когда вы используете подзапрос в SELECT, как это, вы должны дать ему псевдоним. Если вы удалите DRVTBL, вы получите сообщение об ошибке. Это не должно продолжаться и использоваться в другом месте.
Можете ли вы показать полное выражение SQL? Насколько я могу видеть сейчас, DRVTBL не является ключевым словом, а псевдоним, который был предоставлен подзапросу, который используется в предложении FROM.
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'
@Frederik Gheysels, спасибо за быстрый ответ. этот DRVTBL не появляется нигде в SP. – avnic
Когда вы удаляете псевдоним, возможно, что вы получите синтаксическую ошибку и что SQL Server не сможет выполнить запрос. Вы можете изменить имя псевдонима, но более подходящее имя. –