<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Transact-SQL</id>
	<title>Transact-SQL - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Transact-SQL"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Transact-SQL&amp;action=history"/>
	<updated>2026-06-24T10:00:56Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Transact-SQL&amp;diff=449448&amp;oldid=prev</id>
		<title>imported&gt;InternetArchiveBot：​补救2个来源，并将0个来源标记为失效。) #IABot (v2.0.7</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Transact-SQL&amp;diff=449448&amp;oldid=prev"/>
		<updated>2020-09-27T06:37:10Z</updated>

		<summary type="html">&lt;p&gt;补救2个来源，并将0个来源标记为失效。) #IABot (v2.0.7&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&amp;#039;&amp;#039;&amp;#039;Transact-SQL&amp;#039;&amp;#039;&amp;#039;（又稱T-SQL），是在[[Microsoft SQL Server]]和[[Adaptive Server Enterprise|Sybase SQL Server]]上的ANSI [[SQL]]實作，與[[Oracle]]的[[PL/SQL]]性質相近（不只是實作ANSI SQL，也為自身資料庫系統的特性提供實作支援），目前在Microsoft SQL Server&amp;lt;ref&amp;gt;{{Cite web |url=http://msdn.microsoft.com/zh-tw/library/bb510741.aspx |title=Transact-SQL Reference |accessdate=2008-09-13 |archive-date=2008-09-19 |archive-url=https://web.archive.org/web/20080919065433/http://msdn.microsoft.com/zh-tw/library/bb510741.aspx |dead-url=no }}&amp;lt;/ref&amp;gt;和Sybase Adaptive Server&amp;lt;ref&amp;gt;{{Cite web |url=http://infocenter.sybase.com/help/index.jsp?topic=%2Fcom.sybase.help.ase_15.0.sqlug%2Fhtml%2Fsqlug%2Ftitle.htm |title=Sybase Transact-SQL User&amp;#039;s Guide |accessdate=2020-09-27 |archive-date=2016-03-06 |archive-url=https://web.archive.org/web/20160306015738/http://infocenter.sybase.com/help/index.jsp?topic=%2Fcom.sybase.help.ase_15.0.sqlug%2Fhtml%2Fsqlug%2Ftitle.htm |dead-url=no }}&amp;lt;/ref&amp;gt;中仍然被使用為核心的查詢語言。&lt;br /&gt;
&lt;br /&gt;
Transact-SQL是具有批次與區塊特性的SQL指令集合，資料庫開發人員可以利用它來撰寫資料部份的商業邏輯（Data-based Business Logic），以強制限制前端應用程式對資料的控制能力。同時，它也是資料庫物件的主要開發語言。&lt;br /&gt;
&lt;br /&gt;
== 語言結構 ==&lt;br /&gt;
&lt;br /&gt;
Transact-SQL以ANSI SQL為主要組成，目前Microsoft實作的Transact-SQL可支援到ANSI [[SQL-92]]標準。&lt;br /&gt;
&lt;br /&gt;
=== ANSI SQL基礎語法支援 ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DDL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{main|資料定義語言}}&lt;br /&gt;
&lt;br /&gt;
DDL（Data Definition Language）是對於資料庫物件的控制語法，對資料庫物件（如資料表，預存程序，函數或自訂型別等）的新增，修改和刪除都使用此語法。&lt;br /&gt;
&lt;br /&gt;
* CREATE（建立資料庫物件）&lt;br /&gt;
* ALTER（修改資料庫物件）&lt;br /&gt;
* DROP（刪除資料庫物件）&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{main|資料操縱語言}}&lt;br /&gt;
&lt;br /&gt;
DML（Data Manipulation Language）是一般開發人員俗稱的[[CRUD]]（Create/Retrieve/Update/Delete）功能，意指資料的新增／擷取／修改／刪除四個功能。&lt;br /&gt;
&lt;br /&gt;
* SELECT（R）&lt;br /&gt;
* INSERT（C）&lt;br /&gt;
* UPDATE（U）&lt;br /&gt;
* DELETE（D）&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DCL&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{main|資料控制語言}}&lt;br /&gt;
&lt;br /&gt;
DCL（Data Control Language）是由資料庫所提供的保安功能，對於資料庫與資料庫物件的存取原則與權限，都由DCL定義之。&lt;br /&gt;
&lt;br /&gt;
* GRANT（賦與權限）&lt;br /&gt;
* REVOKE（撤消權限）&lt;br /&gt;
&lt;br /&gt;
=== 批次 ===&lt;br /&gt;
&lt;br /&gt;
Transact-SQL可以使用分號&amp;quot;;&amp;quot;來分割不同的SQL指令。例如：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO myTable (myText) VALUES (@myText); SELECT @@IDENTITY&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 控制流語法 ===&lt;br /&gt;
&lt;br /&gt;
Transact-SQL可支援下列的控制流程語法（control-flow）：&lt;br /&gt;
&lt;br /&gt;
# BEGIN ... END，標示SQL指令區塊，使用BEGIN ... END包裝的指令會被視為同一個指令區塊。&lt;br /&gt;
# IF ... ELSE的條件式，並可支援巢狀式的IF判斷式，若IF或ELSE中的指令包含兩個以上，則必須要使用BEGIN ... END來標示區塊，否則會發生語法檢查錯誤。&lt;br /&gt;
# WHILE迴圈，這也是Transact-SQL中唯一支援的迴圈，迴圈中的指令要用BEGIN...END包裝。&lt;br /&gt;
# RETURN，可強制終止區塊的執行。&lt;br /&gt;
# WAITFOR，可強制讓陳述式等待指定時間後才繼續執行。&lt;br /&gt;
# GOTO，可導向執行指令到指定的位置。&lt;br /&gt;
&lt;br /&gt;
=== 自訂變數 ===&lt;br /&gt;
&lt;br /&gt;
在Transact-SQL中，可以利用DECLARE來宣告變數，用SET來設定變數值，用SELECT @var = column的方式，由一個陳述式的回傳值中來取得變數值。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DECLARE @v int -- declare a variable&lt;br /&gt;
SET @v = 50 -- set variable directly.&lt;br /&gt;
SELECT @v = SUM(Qty) FROM SaleItemRecords WHERE SaleID = 53928 -- set variable from a result of statement&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 錯誤處理 ===&lt;br /&gt;
&lt;br /&gt;
Transact-SQL可以在區塊中使用下列方式來處理或引發錯誤：&lt;br /&gt;
&lt;br /&gt;
# RAISERROR，擲出自訂的錯誤狀況。&lt;br /&gt;
# TRY ... CATCH，使用結構化的方式來處理錯誤（只有Microsoft SQL Server實作的Transact-SQL支援）。&lt;br /&gt;
# PRINT，可以印出變數值。&lt;br /&gt;
&lt;br /&gt;
== 開發與管理工具 ==&lt;br /&gt;
&lt;br /&gt;
Transact-SQL通常會使用由SQL Server或Adaptive Server提供的查詢工具，像是：&lt;br /&gt;
&lt;br /&gt;
* SQL Server Query Analyzer（SQL Server 2000, 7.0, 6.5）&lt;br /&gt;
* SQL Server Management Studio（SQL Server 2008（也可用Visual Studio）, 2005）&lt;br /&gt;
* osql.exe，SQL Server 2000, 7.0的命令列SQL工具。&lt;br /&gt;
* sqlcmd.exe，SQL Server 2005的命令列SQL工具&lt;br /&gt;
&lt;br /&gt;
==參考資料==&lt;br /&gt;
&amp;lt;div class=&amp;quot;references-small&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
{{Databases}}&lt;br /&gt;
&lt;br /&gt;
[[Category:SQL]]&lt;br /&gt;
[[Category:微軟]]&lt;br /&gt;
[[Category:Sybase]]&lt;/div&gt;</summary>
		<author><name>imported&gt;InternetArchiveBot</name></author>
	</entry>
</feed>