第十三章

變數

•可在兩個位置執行程式碼

–Client

•Client程序設計的優點

–可以更容易地有千差萬別的需求的用戶提供服務

–可避免額外的網絡流量

–處理器載荷分配到當地環境

–可以創造更好用戶界面的互動

–Server

•Server程序設計的優點

–可以更輕鬆地確保統一應用業務規則

–可以更容易地更新代碼

•批次

•批次是一系列一個或多個提出的陳述,並在同一時間執行

•這些陳述式必須是自己是批次

–create default

–create rule

–create procedure

–create trigger

–declare cursor

•use必須是在一個批處理中最後一個陳述式

•您不能刪除和創建同一個物件在同一批次

•你不可以綁定rule或default和新增資料在岣一個批次中

•註解

•註解是由Adaptive Server在執行過程中被忽略部分代碼

•註解是用來記錄關於程式碼資訊

•註解的表示方法

•-- (雙連字號註解)

•雙連字符註解終止行結束字符

•創建多行註釋,你必須重複“ -- ”在每一行的開頭

•/* */ (斜線星號註解)

•斜線星號註解可以由用於單行或多行註解

區域變數

•區域變數是內存中存儲值由用戶定義指定位置

•區域變數典型用途

–以方便重複利用的常數值

–在T-SQL代碼執行條件的分支

–返回包含變量信息自定義消息

–將信息傳遞到從存儲過程

–避免使用子查詢

•規則

•變數名稱必須開始以“@”

•變數必須有一個系統或用戶定義的數據類型

–任何用戶定義的數據類型關聯屬性是不能繼承

–任何規則或默認值綁定到用戶定義的數據類型是不能繼承

•本地變數是在聲明它們的批處理,存儲過程或觸發器

–在批處理,存儲過程或觸發器終止時,變數將被丟棄

•宣告

•declare variable_name datatype

[, variable_name datatype ]

•變數必須聲明才可以使用

•宣告時,區域變數值設置為NULL

•查詢

•select variable_name

•可以使用select來查詢變數的值

•區域變數分配值

•利用select表達式指派

•select variable_name = expression

[, variable_name = expression ]

•利用select資料表的值指派

•select variable_name = column_name from table_name [ where condition ]

•如果回傳的值有很多個,只會接受最後一個回傳值

•指派update

•update table_name

set { column_name | variable_name } = expression

[, { column_name | variable_name } = expression … ]

[ where condition ]

•如果回傳的值有很多個,只會接受最後一個回傳值

•區域變數的限制

•變數只能用於常數的地方

•如果指派select回傳值,變數值保持不變

•如果指派select返回多個值,變量保留的最後一個值

•錯誤

•沒有宣告

•記得,必須宣告才可以使用變數

•型態錯誤

•記得,該變數值必須相符的變數的數據類型

•沒有指派值

•記得,如果指派select沒有返回值,變量值保持不變

全域變數

•全域變數是內存中的指定位置,由Adaptive Server定義和維護

•全域變數規則

–名字開始與“@ @”

–不能創建用戶

–不能由用方分配值

–值分配可以是本地服務器或連接

•常見的全域變數

•@@rowcount

–回傳的最後一個陳述式影響的行數

•@@error

–返回錯誤號產生的最後聲明

•@@identity

–回傳最後插入到IDENTITY列的的值

•@@version

–回傳服務器的版本號

靜態和動態SQL

•Static SQL

–應用程序,script存儲過程,創建時指定的SQL那些文本

–關鍵字和參考的物件都是固定寫入陳述是時候

–所有SQL語句在本課程中顯示範例到目前為止,都是靜態的SQL

•Dynamic SQL

–在執行時指定的SQL那些文本

–語句執行時才能確定的關鍵字和參考的物件

•動態SQL的限制

•在執行陳述式使用的變數必須是char或varchar

•不能動態執行的語句

–exec or execute

–use

–Transaction control statements

–建立資料表陳述建立臨時資料表

•執行陳述之外,當變數名稱是關鍵字、物件的名稱或表列正在使用的字元,你就不能使用它為變數名稱