Синтаксис языка Transact-SQL, поддерживаемый технологией IntelliSense

В этом разделе описываются инструкции и элементы синтаксиса Transact-SQL, которые поддерживаются технологией IntelliSense в SQL Server 2012.

Инструкции, поддерживаемые технологией IntelliSense

В SQL Server 2012 технология IntelliSense поддерживается только для наиболее часто используемых инструкций Transact-SQL. Некоторые общие условия редактора запросов компонента Компонент Database Engine могут блокировать работу технологии IntelliSense. Дополнительные сведения см. в разделе Устранение сбоев в работе IntelliSense (среда SQL Server Management Studio).

ПримечаниеПримечание

Технология IntelliSense недоступна для зашифрованных объектов баз данных, например зашифрованных хранимых процедур или определяемых пользователем функций. Справка и краткие сведения по параметрам недоступны для параметров расширенных хранимых процедур и определяемых пользователем типов при интеграции со средой CLR.

Инструкция SELECT

Редактор запросов компонента Компонент Database Engine обеспечивает поддержку технологии IntelliSense для следующих синтаксических элементов в инструкции SELECT:

SELECT

WHERE

FROM

ORDER BY

HAVING

UNION

FOR

GROUP BY

TOP

OPTION (указание)

Дополнительные поддерживаемые инструкции Transact-SQL

Редактор запросов компонента Компонент Database Engine также обеспечивает поддержку технологии IntelliSense для инструкций Transact-SQL, приведенных в следующей таблице.

Инструкция Transact-SQL

Поддерживаемый синтаксис

INSERT

Все синтаксические конструкции, кроме предложения execute_statement.

UPDATE

Все синтаксические конструкции.

DELETE

Все синтаксические конструкции.

DECLARE @локальная_переменная

Все синтаксические конструкции.

SET @local_variable

Все синтаксические конструкции.

EXECUTE

Выполнение определяемых пользователем хранимых процедур, системных хранимых процедур, определяемых пользователем функций и системных функций.

CREATE TABLE

Все синтаксические конструкции.

CREATE VIEW

Все синтаксические конструкции.

CREATE PROCEDURE

Все синтаксические конструкции, кроме следующих.

  • Для предложения EXTERNAL NAME технология IntelliSense не поддерживается.

  • В предложении AS технология IntelliSense поддерживает только те инструкции и синтаксические конструкции, которые перечислены в этом разделе.

ALTER PROCEDURE

Все синтаксические конструкции, кроме следующих.

  • Для предложения EXTERNAL NAME технология IntelliSense не поддерживается.

  • В предложении AS технология IntelliSense поддерживается только для тех инструкций и синтаксических конструкций, которые перечислены в этом разделе.

USE

Все синтаксические конструкции.

Технология IntelliSense в поддерживаемых инструкциях

В редакторе запросов компонента Компонент Database Engine технология IntelliSense поддерживается для следующих синтаксических элементов при их использовании в одной из поддерживаемых инструкций Transact-SQL:

  • Все типы соединений, включая APPLY

  • PIVOT и UNPIVOT

  • Ссылки на следующие объекты базы данных.

    • Базы данных и схемы

    • Таблицы, представления, функции с табличным значением и табличные выражения

    • Столбцы

    • Процедуры и параметры процедур

    • Скалярные функции и скалярные выражения

    • Локальные переменные

    • Обобщенные табличные выражения

  • Объекты базы данных, ссылки на которые имеются только в инструкциях CREATE или ALTER в скрипте или пакете, но которые не существуют в базе данных, поскольку скрипт или пакет еще не выполнялся. Ниже приведены эти объекты.

    • Таблицы и процедуры, указанные в инструкции CREATE TABLE или CREATE PROCEDURE в скрипте или пакете.

    • Изменения в таблицах и процедурах, указанных в инструкции ALTER TABLE или ALTER PROCEDURE в скрипте или пакете.

    ПримечаниеПримечание

    Технология IntelliSense недоступна для столбцов инструкции CREATE VIEW, пока инструкция CREATE VIEW не будет исполнена.

Поддержка технологии IntelliSense для приведенных ранее элементов при их использовании в других инструкциях Transact-SQL не предоставляется. Например, поддержка технологии IntelliSense предоставляется для имен столбцов, которые используются в инструкции SELECT, но не для столбцов, используемых в инструкции CREATE FUNCTION.

Примеры

Внутри скрипта или пакета Transact-SQL технология IntelliSense в редакторе запросов компонента Компонент Database Engine поддерживается только для тех инструкций и синтаксических конструкций, которые перечислены в этом разделе. В следующих примерах кода Transact-SQL показано, для каких инструкций и элементов синтаксиса поддерживается технология IntelliSense. Например, в следующем пакете технология IntelliSense доступна для инструкции SELECT, когда она используется в коде самостоятельно, а не содержится в инструкции CREATE FUNCTION.

USE AdventureWorks2012;
GO
SELECT Name
FROM Production.Product
WHERE Name LIKE N'Road-250%' and Color = N'Red';
GO
CREATE FUNCTION Production.ufn_Red250 ()
RETURNS TABLE
AS
RETURN 
(
    SELECT Name
    FROM AdventureWorks2012.Production.Product
    WHERE Name LIKE N'Road-250%'
      AND Color = N'Red'
);GO

Эта функциональность также применяется к наборам инструкций Transact-SQL в предложении AS инструкций CREATE PROCEDURE или ALTER PROCEDURE.

Внутри скрипта или пакета Transact-SQL поддержка технологии IntelliSense обеспечивается для объектов, указанных в инструкции CREATE или ALTER. Однако эти объекты не существуют в базе данных, поскольку инструкции еще не выполнялись. Например, в редакторе запросов можно ввести следующий код:

USE MyTestDB;
GO
CREATE TABLE MyTable
    (PrimaryKeyCol   INT PRIMARY KEY,
    FirstNameCol      NVARCHAR(50),
   LastNameCol       NVARCHAR(50));
GO
SELECT 

После ввода инструкции SELECT технология IntelliSense выдаст список, содержащий в качестве возможных вариантов выбора PrimaryKeyCol, FirstNameCol и LastNameCol даже в том случае, если скрипт еще не выполнялся и таблица MyTable пока не существует в базе данных MyTestDB.