存儲(chǔ)過(guò)程中的關(guān)鍵字--AS、GO的含義
? ? 在個(gè)人學(xué)習(xí)編寫(xiě)SQL Server存儲(chǔ)過(guò)程中,對(duì)于存儲(chǔ)過(guò)程中的關(guān)鍵字As、Go關(guān)鍵字不懂,在網(wǎng)上查看了很多資料。在這里,我個(gè)人稍作總結(jié)一下.
? ? ?========================As、Go說(shuō)法一=======================
? ? ? ? GO?用于在?SSMS?和?SQLCMD?中將其之前的?T-SQL?語(yǔ)句作為一個(gè)批處理提交給?SQL?Server?實(shí)例。GO?不是?T-SQL?語(yǔ)句,只是由這些特定客戶端指定的提交批處理的方式。批處理(Batch)是?SQL?SERVER?客戶端作為一個(gè)單元發(fā)送給服務(wù)的一個(gè)或多個(gè)?T-SQL?語(yǔ)句的集合-客戶端將此集合一次性的提交給實(shí)例,而服務(wù)會(huì)將其編譯為一個(gè)執(zhí)行計(jì)劃。? ? ? ? ? ? ?? ? ? ??啟用?ANSI_NULLS,所有與空值的比較運(yùn)算結(jié)果為?UNKNOWN;否則空值與空值的比較結(jié)果為?TRUE。? ? ? ? ?? ? ? ??
? ? 啟用?QUOTED_IDENTIFIER?表示使用雙引號(hào)(?"")?作為分隔符(當(dāng)標(biāo)示符不符合?SQL?SERVER?的命名規(guī)則時(shí)可以使用?""?或?[]?作為分隔符)。? ? ? ? ? ? ? ? ??? ? ? ??
? ? ? ? ?AS?其實(shí)是關(guān)鍵字,在存儲(chǔ)過(guò)程中可以理解為將其下(到?GO)的?T-SQL?語(yǔ)句,定義為存儲(chǔ)過(guò)程。
? ? ?========================As、Go說(shuō)法二=======================
? ? ? GO 不是 Transact-SQL語(yǔ)句;它是可由?sqlcmd?和?osql?實(shí)用工具以及SQL Server Management Studio 代碼編輯器識(shí)別的命令。
? ? ? SQL Server 實(shí)用工具將 GO解釋為應(yīng)該向SQL Server實(shí)例發(fā)送當(dāng)前批Transact-SQL語(yǔ)句的信號(hào)。當(dāng)前批語(yǔ)句由上一GO命令后輸入的所有語(yǔ)句組成,如果是第一條GO命令,則由即席會(huì)話或腳本開(kāi)始后輸入的所有語(yǔ)句組成。
? ? ?GO 命令和 Transact-SQL語(yǔ)句不能在同一行中。但在GO命令行中可包含注釋。
? ? ?AS 存儲(chǔ)過(guò)程語(yǔ)法的一部分,AS之前是存儲(chǔ)過(guò)程參數(shù)和屬性定義,AS后面表示存儲(chǔ)過(guò)程內(nèi)容的定義
USE?[database_name] GO SET?ANSI_NULLS?ON GO SET?QUOTED_IDENTIFIER?ON GO --?============================================= --?Author: --?Create?date:--?Description: --?============================================= CREATE?PROCEDURE?[dbo].[proc_user_test] ( --?設(shè)置參數(shù) @citizenId?char(10),??--?業(yè)主id @goodsId?char(12),??--?商品id @goodsNum?int,??--?商品個(gè)數(shù) @ElectronDeviceNo?varchar(20),??--?電子秤編號(hào) @exchangeInt?int,??--?兌換積分 @recycleExchangeInt?int,??--?兌換回收積分 @exchangetime?datetime,??--?兌換時(shí)間 @int?int?output??--?用于輸出的參數(shù) ) AS BEGIN?try --?設(shè)置局部變量 declare?@throwExchangeInt?int;??--?兌換投放積分,默認(rèn)值為0,如何設(shè)置? declare?@userId?char(10);??--?操作人員id declare?@primaryKey?varchar(20);?--?唯一標(biāo)識(shí) begin?tran --?insert?into?gar_ElectronDeviceGoodsOrder(?,??,??,??) --?插入電子秤商品兌換記錄信息 insert?into?gar_ElectronDeviceGoodsOrder(citizenId,?goodsId,?goodsNum, ?????????ElectronDeviceNo,?exchangeInt,?throwExchangeInt, ?recycleExchangeInt,?pickExchangeInt,?userId,?exchangetime) values?(@citizenId,?@goodsId,?goodsNum, @ElectronDeviceNo,?@exchangeInt,?0,? @recycleExchangeInt,?0,?@userId,?@exchangetime); ????????--?在這里,是否要獲得主鍵唯一標(biāo)識(shí)? set?@primaryKey?=?@@IDENTITY --?更新業(yè)主積分變化 update?gar_Citizen?set?intCurrency?=?(intCurrency?-?@exchangeInt),? ???intSpend?=?(intSpend?+?@exchangeInt), ???????recycleExchangeInt?=?(recycleExchangeInt?+?@recycleExchangeInt) where?citizenId?=?@citizenId;? end?try? begin?catch set?@int?=?Error_severity(); if(@@trancount?>?0)?begin rollback?tran end end?catch? if(@@trancount?>?0) begin commit?tran? set?@int?=?0; end select?@int?as?code??--?什么意思?不懂 --?以下4行代碼是建立存儲(chǔ)過(guò)程時(shí),系統(tǒng)自動(dòng)添加的語(yǔ)句 --?SET?NOCOUNT?ON; ????--?Insert?statements?for?procedure?here --?SELECT?,? --END GO