本主题介绍 Transact-SQL IntelliSense 支持的 Transact-SQL 语句和语法元素。
IntelliSense 支持的语句
Transact-SQL IntelliSense 仅支持最常用的 Transact-SQL 语句。有些一般条件可能会妨碍 IntelliSense 正常运行。有关更多信息,请参见Transact-SQL IntelliSense 疑难解答。
提示
IntelliSense 不能用于加密的数据库对象,例如加密的存储过程或用户定义函数。“参数信息”和“快速信息”功能不能用于扩展存储过程和 CLR 集成用户定义类型的参数。
SELECT 语句
Transact-SQL 编辑器为 SELECT 语句中的以下语法元素提供 IntelliSense 支持:
| SELECT | WHERE | 
| FROM | ORDER BY | 
| HAVING | UNION | 
| FOR | GROUP BY | 
| TOP | OPTION(提示) | 
支持的其他 Transact-SQL 语句
Transact-SQL 编辑器还为下表中显示的 Transact-SQL 语句提供 IntelliSense 支持。
| Transact-SQL 语句 | 支持的语法 | 
|---|---|
| INSERT | 所有语法,execute_statement 子句除外。 | 
| UPDATE | 所有语法。 | 
| DELETE | 所有语法。 | 
| DECLARE @local_variable | 所有语法。 | 
| SET @local_variable | 所有语法。 | 
| EXECUTE | 执行用户定义的存储过程、系统存储过程、用户定义函数和系统函数。 | 
| CREATE TABLE | 所有语法。 | 
| CREATE VIEW | 所有语法。 | 
| CREATE PROCEDURE | 所有语法,以下情况除外: 
 | 
| ALTER PROCEDURE | 所有语法,以下情况除外: 
 | 
| USE | 所有语法。 | 
支持的语句中的 IntelliSense
当以下语法元素用于支持的 Transact-SQL 语句之一时,Transact-SQL 编辑器中的 Transact-SQL IntelliSense 可支持这些元素:
- 所有联接类型,包括 APPLY 
- PIVOT 和UNPIVOT 
- 对以下数据库对象的引用: - 数据库和架构 
- 表、视图、表值函数和表表达式 
- 列 
- 过程和过程参数 
- 标量函数和标量表达式 
- 局部变量 
- 公用表表达式 (CTE) 
 
- 仅在脚本或批处理中的 CREATE 或 ALTER 语句中引用,但因为尚未运行脚本或批处理,所以数据库中并不存在的数据库对象。这些对象如下: - 已在脚本或批处理中的 CREATE TABLE 或 CREATE PROCEDURE 语句中指定的表和过程。 
- 对于在脚本或批处理中的 ALTER TABLE 或 ALTER PROCEDURE 语句中指定的表和过程的更改。 
 - 提示 - 在执行 CREATE VIEW 语句前,IntelliSense 不可用于 CREATE VIEW 语句的列。 
对于上文所列的元素,当它们在其他 Transact-SQL 语句中使用时,不提供 IntelliSense 支持。例如,对于 SELECT 语句中使用的列名,提供 IntelliSense 支持,但对于 CREATE FUNCTION 语句中使用的列,则不提供 IntelliSense 支持。
示例
在 Transact-SQL 脚本或批处理中,Transact-SQL 编辑器中的 IntelliSense 仅支持本主题中列出的语句和语法。下面的 Transact-SQL 代码示例显示 IntelliSense 支持哪些语句和语法元素。例如,在以下批处理中,如果 SELECT 语句单独使用,则可以使用 IntelliSense,但是,如果 SELECT 包含在 CREATE FUNCTION 语句中,则不能使用 IntelliSense。
USE AdventureWorks;
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 AdventureWorks.Production.Product
    WHERE Name LIKE N'Road-250%'
      AND Color = N'Red'
);GO
此功能还适用于 CREATE PROCEDURE 或 ALTER PROCEDURE 语句的 AS 子句中的 Transact-SQL 语句集合。
在 Transact-SQL 脚本或批处理中,IntelliSense 支持 CREATE 或 ALTER 语句中已指定的对象;但因为尚未执行这些语句,所以数据库中并不存在这些对象。例如,可以在 Transact-SQL 编辑器中输入下面代码:
USE MyTestDB;
GO
CREATE TABLE MyTable
    (PrimaryKeyCol   INT PRIMARY KEY,
    FirstNameCol      NVARCHAR(50),
   LastNameCol       NVARCHAR(50));
GO
SELECT 
键入 SELECT 后,即使尚未执行脚本并且 MyTestDB 中尚不存在 MyTable,IntelliSense 也会列出**“PrimaryKeyCol”、“FirstNameCol”和“LastNameCol”**作为选择列表中的可能元素。