Transact-SQL 不支持 %TYPE 和 %ROWTYPE 变量数据类型定义。在 DECLARE 命令中,不能对 Transact-SQL 变量进行初始化。Oracle NOT NULL 和 CONSTANT 要害字不能用在 Microsoft SQL Server 数据类型定义中。
与 Oracle LONG 和 LONG RAW 数据类型一样,text 和 image 数据类型不能用于变量声明。此外,不支持 PL/SQL 类型的记录和表定义。
变量赋值 Oracle 和 Microsoft SQL Server 提供以下方法,给局部变量赋值。
语句块 Oracle PL/SQL 和 Microsoft SQL Server Transact-SQL 支持使用 BEGINUEND 术语,来指定程序块。Transact-SQL 不要求在 DECLARE 语句后面使用语句块。在 Microsoft SQL Server 中,假如 IF 语句和 WHILE 循环执行不止一个语句,需要使用 BEGINUEND 语句块。
条件处理 Microsoft SQL Server Transact-SQL 条件语句包含 IF 和 ELSE 语句,而不是 Oracle PL/SQL 中的 ELSIF 语句。可以嵌套多个 IF 语句,来达到同样的效果。对于大量的条件测试,CASE 表达式更轻易阅读。
重复的语句执行(循环) Oracle PL/SQL 提供了无条件的 LOOP 和 FOR LOOP。而 Transact-SQL 则提供了 WHILE 循环和 GOTO 语句,来达到循环的目的。
WHILE Boolean_eXPRession {sql_statement statement_block} [BREAK] [CONTINUE]
游标的实现 不管从数据库中请求行数的多少,Oracle 始终要求游标和 SELECT 语句一起使用。在 Microsoft SQL Server 中,未包含在游标内的 SELECT 语句把行作为默认结果集,返回给客户。这是一种将数据返回给客户程序的有效方法。
SQL Server 给游标函数提供了两个接口。当在 Transact-SQL 批处理或存储过程时使用游标时,SQL 语句可用来声明、打开游标和从游标以及定位更新和删除中提取。当使用来自 DB-Library、ODBC 或 OLE DB 的游标时,SQL Server 客户机库透明地调用内置的服务器函数,以更有效地处理游标。
应用程序可以请求一种游标类型,然后执行一条不被所请求类型服务器游标支持的 Transact-SQL 语句。SQL Server 就会返回一个错误,指出游标类型已经更改;或者如给定了一组要素,SQL Server 就会隐式转换游标。有关使 SQL Server 7.0 隐式地将游标从一种类型转换到另一种类型的完整要素列表,请参见 SQL Server Books Online。