預存程序中的關鍵字--AS、GO的含義

來源:互聯網
上載者:User

    在個人學習編寫SQL Server預存程序中,對於預存程序中的關鍵字As、Go關鍵字不懂,在網上查看了很多資料。在這裡,我個人稍作總結一下.


     ========================As、Go說法一=======================

        GO 用於在 SSMS 和 SQLCMD 中將其之前的 T-SQL 語句作為一個批處理提交給 SQL Server 執行個體。GO 不是 T-SQL 語句,只是由這些特定用戶端指定的提交批處理的方式。批處理(Batch)是 SQL SERVER 用戶端作為一個單元發送給服務的一個或多個 T-SQL 語句的集合-用戶端將此集合一次性的提交給執行個體,而服務會將其編譯為一個執行計畫。                     啟用 ANSI_NULLS,所有與空值的比較運算結果為 UNKNOWN;否則空值與空值的比較結果為 TRUE。                 

    啟用 QUOTED_IDENTIFIER 表示使用雙引號( "") 作為分隔字元(當標示符不符合 SQL SERVER 的命名規則時可以使用 "" 或 [] 作為分隔字元)。                          

         AS 其實是關鍵字,在預存程序中可以理解為將其下(到 GO)的 T-SQL 語句,定義為預存程序。


     ========================As、Go說法二=======================

      GO 不是 Transact-SQL語句;它是可由 sqlcmd 和 osql 工具 + 生產力以及SQL Server Management Studio 代碼編輯器識別的命令。

      SQL Server 公用程式將 GO解釋為應該向SQL Server執行個體發送當前批Transact-SQL語句的訊號。當前批語句由上一GO命令後輸入的所有語句組成,如果是第一條GO命令,則由即席會話或指令碼開始後輸入的所有語句組成。

     GO 命令和 Transact-SQL語句不能在同一行中。但在GO命令列中可包含注釋。

     AS 預存程序文法的一部分,AS之前是預存程序參數和屬性定義,AS後面表示預存程序內容的定義


USE [database_name]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<Author,,Name>-- Create date: <Create Date,,>-- Description:<Description,,>-- =============================================CREATE PROCEDURE [dbo].[proc_user_test](-- 設定參數@citizenId char(10),  -- 業主id@goodsId char(12),  -- 商品id@goodsNum int,  -- 商品個數@ElectronDeviceNo varchar(20),  -- 電子秤編號@exchangeInt int,  -- 兌換積分@recycleExchangeInt int,  -- 兌換回收積分@exchangetime datetime,  -- 兌換時間@int int output  -- 用於輸出的參數)ASBEGIN try-- 設定局部變數declare @throwExchangeInt int;  -- 兌換投放積分,預設值為0,如何設定。declare @userId char(10);  -- 操作人員iddeclare @primaryKey varchar(20); -- 唯一標識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);        -- 在這裡,是否要獲得主鍵唯一標識。set @primaryKey = @@IDENTITY-- 更新業主積分變化update gar_Citizen set intCurrency = (intCurrency - @exchangeInt),    intSpend = (intSpend + @exchangeInt),       recycleExchangeInt = (recycleExchangeInt + @recycleExchangeInt)where citizenId = @citizenId; end try begin catchset @int = Error_severity();if(@@trancount > 0) beginrollback tranendend catch if(@@trancount > 0)begincommit tran set @int = 0;endselect @int as code  -- 什麼意思。不懂-- 以下4行代碼是建立預存程序時,系統自動添加的語句-- SET NOCOUNT ON;    -- Insert statements for procedure here-- SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>--ENDGO


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.