與 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。