日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在介紹動態(tài)SQL前我們先看看什么是靜態(tài)SQL

靜態(tài)SQL

靜態(tài) SQL 語句一般用于嵌入式 SQL 應(yīng)用中,在程序運行前,SQL 語句必須是確定的,例如 SQL 語句中涉及的列名和表名必須是存在的。靜態(tài) SQL 語句的編譯是在應(yīng)用程序運行前進(jìn)行的,編譯的結(jié)果會存儲在數(shù)據(jù)庫內(nèi)部。而后程序運行時,數(shù)據(jù)庫將直接執(zhí)行編譯好的 SQL 語句,降低運行時的開銷。

動態(tài)SQL

動態(tài) SQL 語句是在應(yīng)用程序運行時被編譯和執(zhí)行的,例如,使用 DB2 的交互式工具 CLP 訪問數(shù)據(jù)庫時,用戶輸入的 SQL 語句是不確定的,因此 SQL 語句只能被動態(tài)地編譯。動態(tài) SQL 的應(yīng)用較多,常見的 CLI 和 JDBC 應(yīng)用程序都使用動態(tài) SQL。

動態(tài)SQL作用

  • 自動化管理任務(wù)。例如:對于數(shù)據(jù)庫實例中的每個數(shù)據(jù)庫,查詢其元數(shù)據(jù),為其執(zhí)行BACKUP DATABASE語句。
  • 改善特定任務(wù)的性能。例如,構(gòu)造參數(shù)化的特定查詢,以重用以前緩存過的執(zhí)行計劃。
  • 對實際數(shù)據(jù)進(jìn)行查詢的基礎(chǔ)上,構(gòu)造代碼元素。例如,當(dāng)事先不知道再PIVOT運算符的IN子句中應(yīng)該出現(xiàn)哪些元素時,動態(tài)構(gòu)造PIVOT查詢。

 

動態(tài)SQL執(zhí)行方法

使用EXEC(EXECUTE的縮寫)命令和使用SP_EXECUTERSQL。

EXEC命令執(zhí)行

語法

EXECUTE (SQL語句)

注:EXECUTE 命令有兩個用途,一個是用來執(zhí)行存儲過程,另一個是執(zhí)行動態(tài)SQL

不帶參數(shù)示例

在變量@SQL中保存了一個字符串,該字符串中包含一條查詢語句,再用EXEC調(diào)用保存在變量中的批處理代碼,我們可以這樣寫SQL:

EXEC ('SELECT * FROM Customers')

 

結(jié)果如下:

SQL高級知識——動態(tài)SQL

 

 

與我們直接執(zhí)行SELECT * FROM Customers一樣。

帶參數(shù)示例

還是上面的示例,我們換一種寫法

DECLARE @SQL AS VARCHAR(100);
DECLARE @Column AS VARCHAR(20);
SET @Column = '姓名'
SET @SQL = 'SELECT ' + @Column + ' FROM Customers';
EXEC (@SQL)

 

結(jié)果如下:

SQL高級知識——動態(tài)SQL

 

 

SP_EXECUTERSQL執(zhí)行

語法

EXEC SP_EXECUTERSQL 參數(shù)1,參數(shù)2,參數(shù)3

 

注意:SP_EXECUTERSQL是繼EXEC后另一種執(zhí)行動態(tài)SQL的方法。使用這個存儲過程更加安全和靈活,因為它支持輸入和輸出參數(shù)。注意的是,與EXEC不同的是,SP_EXECUTERSQL只支持使用Unicode字符串作為其輸入的批處理代碼。

示例

構(gòu)造了一個對Customers表進(jìn)行查詢的批處理代碼,在其查詢過濾條件中使用一個輸入?yún)?shù)@CusID

DECLARE @SQL AS NVARCHAR(100);
SET @SQL=N'SELECT * FROM Customers
WHERE 客戶ID=@CusID;';
EXEC SP_EXECUTESQL
 @STMT=@SQL,
 @PARMS=N'@CusID AS INT',
 @CusID=1;

 

結(jié)果如下:

SQL高級知識——動態(tài)SQL

代碼中將輸入?yún)?shù)取值指定為1,但即使采用不同的值在運行這段代碼,代碼字符串仍然保存相同。這樣就可以增加重用以前緩存過的執(zhí)行計劃的機(jī)會。

批注

動態(tài)SQL在日常工作中可能接觸的比較少,但是其功能是非常強大的,可以直接嵌套在代碼里進(jìn)行操作數(shù)據(jù),但是也很容易出錯,特別是在進(jìn)行命令拼接時候要非常仔細(xì)。這里只是給大家簡單介紹一下其使用方法,需要深入使用還需要多多研究。

分享到:
標(biāo)簽:動態(tài) SQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定