日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解讀SQL存儲過程入門級教程(4)_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:按指定排列順序獲取數(shù)據(jù)的sql語句
測試table create table table1 (id int,name char) insert into table1 select 1,'q' union all select 2,'r' union all select 3,'3' union all select 4,'5' 要求按指定的id順序(比如2,1,4,3)排列獲取table1的數(shù)據(jù) 方法1: 使用union all,但是有256條數(shù)據(jù)的



說明 SQL Server 是將空字符串解釋為單個空格還是解釋為真正的空字符串,由兼容級別設(shè)置控制。
如果兼容級別小于或等于 65,SQL Server 就將空字符串解釋為單個空格。
如果兼容級別等于 70,則 SQL Server 將空字符串解釋為空字符串。
獲得有關(guān)存儲過程的信息
若要顯示用來創(chuàng)建過程的文本,請?jiān)谶^程所在的數(shù)據(jù)庫中執(zhí)行 sp_helptext,并使用過程名作為參數(shù)。 


說明 使用 ENCRYPTION 選項(xiàng)創(chuàng)建的存儲過程不能使用 sp_helptext 查看。


若要顯示有關(guān)過程引用的對象的報表,請使用 sp_depends。 

若要為過程重命名,請使用 sp_rename。 


引用對象

SQL Server 允許創(chuàng)建的存儲過程引用尚不存在的對象。在創(chuàng)建時,只進(jìn)行語法檢查。執(zhí)行時,如果高速緩存中尚無有效的計(jì)劃,則編譯存儲過程以生成執(zhí)行計(jì)劃。只有在編譯過 程中才解析存儲過程中引用的所有對象。因此,如果語法正確的存儲過程引用了不存在的對象,則仍可以成功創(chuàng)建,但在運(yùn)行時將失敗,因?yàn)樗玫膶ο蟛淮嬖凇?
延遲名稱解析和兼容級別
SQL Server 允許 Transact-SQL 存儲過程在創(chuàng)建時引用不存在的表。這種能力稱為延遲名稱解析。不過,如果 Transact-SQL 存儲過程引用了該存儲過程中定義的表,而兼容級別設(shè)置(通過執(zhí)行 sp_dbcmptlevel 來設(shè)置)為 65,則在創(chuàng)建時會發(fā)出警告信息。而如果在運(yùn)行時所引用的表不存在,將返回錯誤信息。

執(zhí)行存儲過程

成功執(zhí)行 CREATE PROCEDURE 語句后,過程名稱將存儲在 sysobjects 系統(tǒng)表中,而 CREATE PROCEDURE 語句的文本將存儲在 syscomments 中。第一次執(zhí)行時,將編譯該過程以確定檢索數(shù)據(jù)的最佳訪問計(jì)劃。

使用 cursor 數(shù)據(jù)類型的參數(shù)

存儲過程只能將 cursor 數(shù)據(jù)類型用于 OUTPUT 參數(shù)。如果為某個參數(shù)指定了 cursor 數(shù)據(jù)類型,也必須指定 VARYING 和 OUTPUT 參數(shù)。如果為某個參數(shù)指定了 VARYING 關(guān)鍵字,則數(shù)據(jù)類型必須是 cursor,并且必須指定 OUTPUT 關(guān)鍵字。



說明 cursor 數(shù)據(jù)類型不能通過數(shù)據(jù)庫 API(例如 OLE DB、ODBC、ADO 和 DB-Library)綁定到應(yīng)用程序變量上。因?yàn)楸仨毾冉壎?nbsp;OUTPUT 參數(shù),應(yīng)用程序才可以執(zhí)行存儲過程,所以帶有 cursor OUTPUT 參數(shù)的存儲過程不能通過數(shù)據(jù)庫 API 調(diào)用。只有將 cursor OUTPUT 變量賦值給 Transact-SQL 局部 cursor 變量時,才可以通過 Transact-SQL 批處理、存儲過程或觸發(fā)器調(diào)用這些過程。


Cursor 輸出參數(shù)
在執(zhí)行過程時,以下規(guī)則適用于 cursor 輸出參數(shù): 

對于只進(jìn)游標(biāo),游標(biāo)的結(jié)果集中返回的行只是那些存儲過程執(zhí)行結(jié)束時處于或超出游標(biāo)位置的行,例如: 
在過程中的名為 RS 的 100 行結(jié)果集上打開一個非滾動游標(biāo)。 

過程提取結(jié)果集 RS 的頭 5 行。

過程返回到其調(diào)用者。


返回到調(diào)用者的結(jié)果集 RS 由 RS 的第 6 到 100 行組成,調(diào)用者中的游標(biāo)處于 RS 的第一行之前。 
對于只進(jìn)游標(biāo),如果存儲過程完成后,游標(biāo)位于第一行的前面,則整個結(jié)果集將返回給調(diào)用批處理、存儲過程或觸發(fā)器。返回時,游標(biāo)將位于第一行的前面。


對于只進(jìn)游標(biāo),如果存儲過程完成后,游標(biāo)的位置超出最后一行的結(jié)尾,則為調(diào)用批處理、存儲過程或觸發(fā)器返回空結(jié)果集。 

說明 空結(jié)果集與空值不同。

對于可滾動游標(biāo),在存儲過程執(zhí)行結(jié)束時,結(jié)果集中的所有行均會返回給調(diào)用批處理、存儲過程或觸發(fā)器。返回時,游標(biāo)保留在過程中最后一次執(zhí)行提取時的位置。

對于任意類型的游標(biāo),如果游標(biāo)關(guān)閉,則將空值傳遞回調(diào)用批處理、存儲過程或觸發(fā)器。如果將游標(biāo)指派給一個參數(shù),但該游標(biāo)從未打開過,也會出現(xiàn)這種情況。 

說明 關(guān)閉狀態(tài)只有在返回時才有影響。例如,可以在過程中關(guān)閉游標(biāo),稍后再打開游標(biāo),然后將該游標(biāo)的結(jié)果集返回給調(diào)用批處理、存儲過程或觸發(fā)器。

分享:總結(jié)經(jīng)典常用的SQL語句(2)
向表中添加一個新記錄,你要使用SQLINSERT語句。 這里有一個如何使用這種語句的例子: INSERTmytable(mycolumn)VALUES(‘somedata’) 這個語句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數(shù)據(jù)的字段的名字在第一個括號中指定,實(shí)際的數(shù)

來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時間:2010-04-06
相關(guān)Mssql數(shù)據(jù)庫教程