好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > sqlserver 腳本和批處理指令小結

sqlserver 腳本和批處理指令小結

熱門標簽:威海智能語音外呼系統 北京辦理400電話多少 智能語音外呼系統哪個牌子好 溫州語音外呼系統代理 400電話申請需要開戶費嗎 山西語音外呼系統價格 南京電銷外呼系統運營商 西安青牛防封電銷卡 重慶防封電銷機器人供應商

一.腳本基礎
     1.USE語句
          設置當前數據庫。
     2.聲明變量
          語法:DECLARE @變量名 變量類型
          在聲明變量后,給變量賦值之前,變量的值為NULL。
          將系統函數賦給聲明的變量,這個方法可以使我們能更安全地使用值,該值只有人為地改變時它才變動。如果直接使用系統函數本身,那么當它發生變動時,有
     時會無法確定其究竟為何,因為大多數系統函數值是由系統確定的。這容易在你不預期的情況下導致系統改變了值,引起不可預期的后果。
          (1).給變量賦值
               SET:當進行變量賦值是,該值已經知道是確切值或者是其他變量時,使用SET。
               SELECT:當變量賦值基于一個查詢時,使用SELECT。
          (2).系統函數
               SQL Server 2005中有30多個無參的系統函數,其中一些最重要的如下:
               @@ERROR:                    返回當前連接下,最后執行的T-SQL語句的錯誤代碼,如無錯誤返回0。
               @@FETCH_STATUS:       和FETCH語句配合使用。
               @@IDENTITY:                返回最后一句運行語句的、自動生成的標識值,作為最后INSERT或者SELECT INTO語句的結果。
               @@ROWCOUNT:              返回最后一個語句影響的行數。
               @@SERVERNAME:          返回腳本正在其上運行的本地服務的名字。
               @@TRANCOUNT:            返回活動事務的數量,特別是針對當前連接的事務的瓶頸程度。

二.批處理
     (1).GO單獨占一行。在同一行上,T-SQL語句不能在GO語句之前。
     (2).所有語句從腳本開始處或者上一個GO語句開始編譯,直到下一個GO語句或者腳本結束,將這段代碼編譯到一個執行計劃中并相互獨立地送往服務器。前一
 個執行計劃中發生錯誤,不會影響后一個執行計劃。
     (3).GO不是一個T-SQL命令,只是被編輯工具識別的命令。當編輯工具碰到GO,它把GO看做一個結束批處理的標記,將其打包,然后作為一個獨立單元發送到
 服務器——不包括GO,服務器對于GO沒有任何概念。         
     1.批處理中的錯誤
          語法錯誤,運行時錯誤。
     2.何時使用批處理
          (1).獨自成批處理的語句
               有幾個命令必須獨自成批處理,它們包括:
                    CREATE DEFAULT
                    CREATE PROCEDURE
                    CREATE RULE
                    CREATE TRIGGER
                    CREATE VIEW
               如果想將這些語句中的任何一條和其他語句組成單獨的一個腳本,那么需要采用一個GO語句將它們分別斷開,歸入各自的批處理中。
          (2).使用批處理建立優先級
               使用批處理最可靠的例子是,當需要考慮語句執行的優先順序時,也就是說,需要一個任務在另一個任務開始前執行。
               例如:
                    CREATE DATABASE Test                    

復制代碼 代碼如下:

CREATE TABLE TestTable
(
col1 INT,
col2 INT
)

               執行語句,會發現生成的表沒有在Test數據庫中,而是在master數據庫中(如果當前使用的數據庫是系統數據庫)。因為在執行腳本的時候,使用的數據
          庫是系統數據庫,該數據庫是當前的,所以生成的表在系統數據庫中。看起來,應該在創建表之前指定數據庫Test。然而,這樣仍然存在問題。解析器試圖校
          驗代碼,發現我們用USE命令引用的數據庫并不存在。原因在于創建數據庫的語句和創建表的語句寫在一個批處理中,在執行該腳本之前,當然數據庫還沒有
          創建。根據批處理的要求,我們將創建數據庫和創建表的腳本用GO語句分為兩個獨立的批處理。正確代碼如下:
復制代碼 代碼如下:

CREATE DATABASE Test
GO

USE Test
CREATE TABLE TestTable
(
col1 INT,
col2 INT
)

三.動態SQL:使用EXE命令生成代碼
     語法:EXEC/EXECUTE ({字符串變量> | '字面值命令字符串>'})
     1.EXEC的作用域
          真正的調用EXEC語句的行,擁有同該EXEC語句正在運行的批或過程中的其他代碼相同的作用域。但是作為EXEC語句結果而被執行的代碼,被認為是在它自
     己的批中。
          例如:
          DECLARE @OutVar VARCHAR(50)
          EXEC ('SELECT @OutVar = FirstName FROM Contact WHERE ContactID = 1')
          這里系統會報錯,指出必須聲明變量@OutVar。因為EXEC的語句獨自成為一個批處理,其中的變量不能和其外的作用域相溝通,只在這個批處理中有效。此
     時,@OutVar的值為NULL。正確的寫法如下:
          EXEC ('DECLARE @OutVar VARCHAR(50)
                    SELECT @OutVar = FirstName FROM Contact WHERE ContactID = 1')
          這里,我們看到兩中不同的作用域,這兩種作用域間不能相互溝通。如果不采用外部機制,比如一個臨時表,我們就沒有辦法實現在內部作用域和外部作用域
     之間傳遞信息。有一個例外的事情是可以在EXEC的區域內部出現,并且也能在EXEC執行后被看到,這就是系統函數。因此,像@@ROWCOUNT這樣的變量仍然
     能夠被使用。
     2.安全上下文和EXEC
          當賦予某人權利運行一個存儲過程,意味著他也能獲得權利去執行存儲過程內部的動作。比如,有一個存儲過程用來列出去年內所有的雇傭員工。其中有權限
     執行該存儲過程的人,才能夠執行并返回結果——即使他沒有權限直接訪問人力資源的員工表。
          這樣隱含權限對于EXEC語句是無效的。在默認情況下,任何在一個EXEC語句內部建立的參照,都將在當前用戶的安全上下文中運行。因此,我們有權利去訪
     問一個叫spNewEmployee的存儲過程,但是卻沒有權利去訪問員工表。如果spNewEmployee通過一個簡單的SELECT語句獲得值,那么一切正常。但是如果
     pNewEmployee使用EXEC語句去執行一個SELECT語句,這個EXEC語句將失敗——因為沒有權利訪問員工表。
     3.用戶自定義函數和EXEC關聯
          不能在同一個語句中同時運行一個函數和EXEC語句。例如:
          DECLARE @Num INT
          SET @Num = 3
          EXEC ('SELECT LEFT(LastName, ' + CAST(@Num AS VARCHAR) + ') AS FilingName FROM Contact')
          這個語句會返回一個錯誤消息,因為CAST函數需要在EXEC所在行之前被解析。正確代碼如下:
          DECLARE @Num INT
          DECLARE @str VARCHAR(255)
          SET @Num = 3
          SET @str = 'SELECT LEFT(LastName, ' + CAST(@Num AS VARCHAR) + ') AS FilingName FROM Contact'
          EXEC (@str)
          這個例子工作正常,因為EXEC的輸入值已經是一個完整的字符串。
     4.EXEC和用戶自定義函數
          一般來說,不允許用戶自定義函數內部使用EXEC去運行動態SQL,但是,使用EXEC運行一個存儲過程,少數情況是合法的。

標簽:河源 貸款群呼 黃山 中衛 新余 宜春 濟寧 金昌

巨人網絡通訊聲明:本文標題《sqlserver 腳本和批處理指令小結》,本文關鍵詞  sqlserver,腳本,和,批處理,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sqlserver 腳本和批處理指令小結》相關的同類信息!
  • 本頁收集關于sqlserver 腳本和批處理指令小結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 老司机深夜福利在线| 男男全肉黄湿玩具play文| 办公室秘书被狂啪嗯啊视频| 黑料正能量index.php| 99视频在线精品免费| 91麻豆乱码一区二区三区gif | 两个人看的www免费视频| 军人糙汉攻×浪荡诱受H文| 国产肉丝美脚一区二区三区视频| 看全色黄大色大片免费久黄久| 老头舔女人下面全过程| 爱操综合| 我要看黄色大片| 国产牛仔裤在线精品毛片| 白洁性荡生活178无删减阅读| 影院在线观看| 国产japan色系videos护士| 韩国伦理电影在线观看午夜电影网 | 同城炮约免费网站夜色| 啊…进去了…好痛…轻点| 小箩莉奶水四溅小说| a天堂一码二码专区| 45分钟免费真人视频| a级黄毛片| 稀缺小u女呦精品呦啊呦| 秋霞小说| 激烈的男同(h)| 短裙公交车被强好爽h文| 女留学生与老外激情视频| 调教jk黑色丝袜超薄过膝袜| 精东污污网址下载| 久久精品国产999大香线焦| 自w到高c| 欧美成人精品一区二区三区在线看| 国产偷啪视频一区| 国产91成人精品亚洲精品| 少妇偷人高潮A片XXXX| 男人皇宫◆亚洲努力打造987| 体育生互插| bdsm性残忍xxⅹbdsm| 酒吧卫生间激情啪啪|