【转】 什么是Transact-SQL

什么是Transact-SQL?

http://hi.baidu.com/wolfand11/blog/item/5e418ded130719dfb21cb112.html

2010-02-01 19:30

         Transact-SQL(又称 T-SQL),是在 Microsoft SQL ServerSybase SQL Server 上的 ANSI SQL 实现,与 OraclePL/SQL 性质相近(不只是实现 ANSI SQL,也为自身数据库系统的特性提供实现支持),目前在 Microsoft SQL Server[1] 和 Sybase Adaptive Server[2] 中仍然被使用为内核的查询语言。

Transact-SQL = 批次特性 + 区块特性 + ANSI SQL

数据库开发人员可以利用Transact-SQL来撰写数据部份的商业逻辑 Data-based Business Logic),以强制限制前端应用程序对数据的控制能力。同时,它也是数据库对象的主要开发语言。

Transact-SQL 以 ANSI SQL 为主要组成,目前 Microsoft 实现的 Transact-SQL 可支持到 ANSI SQL-92 标准。

批次特性

Transact-SQL 可以使用分号 ";" 来分割不同的 SQL 指令。例如:

INSERT INTO myTable myText) VALUES @myText); SELECT @@IDENTITY

控制流语法

Transact-SQL 可支持下列的控制流程语法 control-flow):

  1. BEGIN … END,标示 SQL 指令区块,使用 BEGIN … END 包装的指令会被视为同一个指令区块。
  2. IF … ELSE 的条件式,并可支持嵌套式的 IF 判断式,若 IF 或 ELSE 中的指令包含两个以上,则必须要使用 BEGIN … END 来标示区块,否则会发生语法检查错误。
  3. WHILE 循环,这也是 Transact-SQL 中唯一支持的循环,循环中的指令要用 BEGIN…END 包装。
  4. RETURN,可强制终止区块的运行。
  5. WAITFOR,可强制让陈述式等待指定时间后才继续运行。
  6. GOTO,可导向运行指令到指定的位置。

自定义变量

在 Transact-SQL 中,可以利用 DECLARE 来声明变量,用 SET 来设置变量值,用 SELECT @var = column 的方式,由一个陈述式的回传值中来取得变量值。

DECLARE @v int -- declare a variable
SET @v = 50 -- set variable directly.
SELECT @v = SUMQty) FROM SaleItemRecords WHERE SaleID = 53928 -- set variable from a result of statement

错误处理

Transact-SQL 可以在区块中使用下列方式来处理或引发错误:

  1. RAISERROR,掷出自定义的错误状况。
  2. TRY … CATCH,使用结构化的方式来处理错误(只有 Microsoft SQL Server 实现的 Transact-SQL 支持)。
  3. PRINT,可以印出变量值。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注