青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版MSDN

Blog @ Blog

當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

常用鏈接

統計

積分與排名

BBS

Blog

Web

最新評論

SQL Server中如何寫存儲過程

1、設計存儲過程

幾乎任何可寫成批處理的 Transact-SQL 代碼都可用于創建存儲過程。

2、存儲過程的設計規則

存儲過程的設計規則包括:

  • CREATE PROCEDURE 定義本身可包括除下列 CREATE 語句以外的任何數量和類型的 SQL 語句,存儲過程中的任意地方都不能使用下列語句:
    CREATE DEFAULT CREATE TRIGGER
    CREATE PROCEDURE CREATE VIEW
    CREATE RULE  
  • 可在存儲過程中創建其它數據庫對象。可以引用在同一存儲過程中創建的對象,前提是在創建對象后再引用對象。
  • 可以在存儲過程內引用臨時表。
  • 如果在存儲過程內創建本地臨時表,則該臨時表僅為該存儲過程而存在;退出該存儲過程后,臨時表即會消失。
  • 如果執行調用其它存儲過程的存儲過程,那么被調用存儲過程可以訪問由第一個存儲過程創建的、包括臨時表在內的所有對象。
  • 如果執行在遠程 Microsoft® SQL Server™ 2000 實例上進行更改的遠程存儲過程,則不能回滾這些更改。遠程存儲過程不參與事務處理。
  • 存儲過程中參數的最大數目為 2100。
  • 存儲過程中局部變量的最大數目僅受可用內存的限制。
  • 根據可用內存的不同,存儲過程的最大大小可達 128 MB。

3、限定存儲過程內的名稱

      在存儲過程內部,如果用于諸如 SELECT 或 INSERT 這樣的語句的對象名沒有限定用戶,那么用戶將默認為該存儲過程的所有者。在存儲過程內部,如果創建存儲過程的用戶沒有限定 SELECT、INSERT、UPDATE 或 DELETE 語句中引用的表名,那么通過該存儲過程對這些表進行的訪問將默認地受到該過程的創建者權限的限制。

        如果有其他用戶要使用存儲過程,則用于語句 ALTER TABLE、CREATE TABLE、DROP TABLE、TRUNCATE TABLE、CREATE INDEX、DROP INDEX、UPDATE STATISTICS 和 DBCC 的對象名必須用該對象所有者的名稱限定。例如,Mary 擁有表 marytab,如果她希望其他用戶能夠執行使用該表的存儲過程,必須在該表用于上述某一條語句時對其表名進行限定。

        此規則是必需的,因為運行存儲過程時將解析對象的名稱。如果未限定 marytab,而 John 試圖執行該過程,SQL Server 將查找 John 所擁有的名為 marytab 的表。

4、加密過程定義

        如果要創建存儲過程,并且希望確保其他用戶無法查看該過程的定義,那么可以使用 WITH ENCRYPTION 子句。這樣,過程定義將以不可讀的形式存儲。

        存儲過程一旦加密其定義即無法解密,任何人(包括存儲過程的所有者或系統管理員)都將無法查看存儲過程定義。

5、SET 語句選項

當 ODBC 應用程序與 SQL Server 連接時,服務器將自動設置會話的下列選項:

  • SET QUOTED_IDENTIFIER ON
  • SET TEXTSIZE 2147483647
  • SET ANSI_DEFAULTS ON
  • SET CURSOR_CLOSE_ON_COMMIT OFF
  • SET IMPLICIT_TRANSACTIONS OFF

        這些設置將提高 ODBC 應用程序的可移植性。由于基于 DB-Library 的應用程序通常不設置這些選項,所以應在上述所列 SET 選項打開和關閉的情況下都對存儲過程進行測試。這樣可確保存儲過程始終能正確工作,而不管特定的連接在喚醒調用該存儲過程時可能設置的選項。需要特別設置其中一個選項的存儲過程,應在開始該存儲過程時發出一條 SET 語句。此 SET 語句將只對該存儲過程的執行保持有效,當該存儲過程結束時,將恢復原設置。

示例

A. 創建使用參數的存儲過程

下例創建一個在 pubs 數據庫中很有用的存儲過程。給出一個作者的姓和名,該存儲過程將顯示該作者的每本書的標題和出版商。

CREATE PROC au_info @lastname varchar(40), @firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id
JOIN titles ON titleauthor.title_id = titles.title_id
JOIN publishers ON titles.pub_id = publishers.pub_id
WHERE au_fname = @firstname
AND au_lname = @lastname
GO

 

將出現一條說明該命令未返回任何數據也未返回任何行的消息,這表示已創建該存儲過程。

現在執行 au_info 存儲過程:

EXECUTE au_info Ringer, Anne
GO

下面是結果集:

au_lname au_fname title pub_name
--------- --------- --------------------- ----------------
Ringer Anne The Gourmet Microwave Binnet & Hardley
Ringer Anne Is Anger the Enemy? New Moon Books

(2 row(s) affected)
B. 創建使用參數默認值的存儲過程

下例創建一個存儲過程 pub_info2,該存儲過程顯示作為參數給出的出版商所出版的某本書的作者姓名。如果未提供出版商的名稱,該存儲過程將顯示由 Algodata Infosystems 出版的書籍的作者。


CREATE PROC pub_info2 @pubname varchar(40= 'Algodata Infosystems'
AS
SELECT au_lname, au_fname, pub_name
FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id
JOIN titles t ON ta.title_id = t.title_id
JOIN publishers p ON t.pub_id = p.pub_id
WHERE @pubname = p.pub_name

執行未指定參數的 pub_info2

EXECUTE pub_info2
GO

下面是結果集:

au_lname au_fname pub_name
---------------- ---------------- --------------------
Green Marjorie Algodata Infosystems
Bennet Abraham Algodata Infosystems
O'Leary Michael Algodata Infosystems
MacFeather Stearns Algodata Infosystems
Straight Dean Algodata Infosystems
Carson Cheryl Algodata Infosystems
Dull Ann Algodata Infosystems
Hunter Sheryl Algodata Infosystems
Locksley Charlene Algodata Infosystems

(9 row(s) affected)
C. 執行用顯式值替代參數默認值的存儲過程

在下例中,存儲過程 showind2 @table 參數默認值是 titles


CREATE PROC showind2 @table varchar(30= 'titles'
AS
SELECT TABLE_NAME = sysobjects.name,
INDEX_NAME 
= sysindexes.name, INDEX_ID = indid
FROM sysindexes INNER JOIN sysobjects ON sysobjects.id = sysindexes.id
WHERE sysobjects.name = @table

列標題(例如,TABLE_NAME)可使結果更具可讀性。下面是該存儲過程顯示的 authors 表的情況:

EXECUTE showind2 authors
GO
TABLE_NAME INDEX_NAME INDEX_ID
---------- ---------- ----------
authors UPKCL_auidind 1
authors aunmind 2

(2 row(s) affected)

如果用戶未提供值,則 SQL Server 將使用默認表 titles

EXECUTE showind2
GO

下面是結果集:

TABLE_NAME INDEX_NAME INDEX_ID
---------- ---------- ----------
titles UPKCL_titleidind 1
titles titleind 2

(2 row(s) affected)
D. 使用參數默認值 NULL 創建存儲過程

參數默認值可以是 NULL 值。在這種情況下,如果未提供參數,則 SQL Server 將根據存儲過程的其它語句執行存儲過程。不會顯示錯誤信息。

過程定義還可指定當不給出參數時要采取的其它某種措施。例如:


CREATE PROC showind3 @table varchar(30= NULL
AS IF @table IS NULL
PRINT 'Give a table name'
ELSE
SELECT TABLE_NAME = sysobjects.name,
INDEX_NAME 
= sysindexes.name, INDEX_ID = indid
FROM sysindexes INNER JOIN sysobjects
ON sysobjects.id = sysindexes.id
WHERE sysobjects.name = @table
E. 使用包含通配符的參數默認值創建存儲過程

如果存儲過程將參數用于 LIKE 關鍵字,那么默認值可包括通配符(%、_、[] 和 [^])。例如,可將 showind 修改為當不提供參數時顯示有關系統表的信息:


CREATE PROC showind4 @table varchar(30= 'sys%'
AS SELECT TABLE_NAME = sysobjects.name,
INDEX_NAME 
= sysindexes.name, INDEX_ID = indid
FROM sysindexes INNER JOIN sysobjects
ON sysobjects.id = sysindexes.id
WHERE sysobjects.name LIKE @table

在存儲過程 au_info 的下列變化形式中,兩個參數都有帶通配符的默認值:

CREATE PROC au_info2 @lastname varchar(30= 'D%',
@firstname varchar(18= '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id
JOIN titles ON titleauthor.title_id = titles.title_id
JOIN publishers ON titles.pub_id = publishers.pub_id
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
如果執行 au_info2 時不指定參數,將顯示姓以字母 D 開頭的所有作者:
EXECUTE au_info2
GO

下面是結果集:

au_lname au_fname title pub_name
-------- -------- --------------------- -------------------
Dull Ann Secrets of Silicon Val Algodata Infosystems
del Castillo Innes Silicon Val Gastrono Binnet & Hardley
DeFrance Michel The Gourmet Microwave Binnet & Hardley

(3 row(s) affected)

下例在兩個參數的默認值已定義的情況下,省略了第二個參數,因此可找到姓為 Ringer 的所有作者的書和出版商:

EXECUTE au_info2 Ringer
GO
au_lname au_fname title pub_name
--------- --------- ---------------------- ----------------
Ringer Anne The Gourmet Microwave Binnet & Hardley
Ringer Anne Is Anger the Enemy? New Moon Books
Ringer Albert Is Anger the Enemy? New Moon Books
Ringer Albert Life Without Fear New Moon Books

(4 row(s) affected)

posted on 2008-06-19 08:47 isabc 閱讀(4156) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

廣告信息(免費廣告聯系)

中文版MSDN:
歡迎體驗

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久亚洲一区| 欧美成人在线免费视频| 亚洲欧洲偷拍精品| 老**午夜毛片一区二区三区| 国产日韩欧美综合| 亚洲自拍偷拍麻豆| 亚洲精品国久久99热| 你懂的国产精品| 极品尤物av久久免费看| 久久久久久一区二区| 亚洲欧美自拍偷拍| 国产日产高清欧美一区二区三区| 亚洲视频你懂的| 亚洲日本aⅴ片在线观看香蕉| 欧美精品v国产精品v日韩精品| 亚洲国产成人精品久久久国产成人一区| 夜夜夜久久久| 亚洲国产精品专区久久| 欧美成人免费播放| 一本色道久久综合亚洲精品小说| 亚洲精品在线观看免费| 欧美精品系列| 亚洲欧美日韩成人高清在线一区| 宅男精品视频| 国产一区二区欧美日韩| 久久在线91| 男女精品视频| 中文有码久久| 亚洲欧美另类国产| 在线观看日韩| 日韩亚洲精品电影| 国产自产v一区二区三区c| 欧美成人免费va影院高清| 欧美成人一区二区三区在线观看| 夜夜精品视频一区二区| 亚洲一区美女视频在线观看免费| 国产一二三精品| 欧美电影专区| 国产精品久久久久av| 久久不见久久见免费视频1| 久久九九国产精品怡红院| 亚洲美女在线观看| 午夜免费日韩视频| 国产真实久久| 亚洲精品欧美专区| 午夜精品久久久久久久男人的天堂| 日韩一区二区免费看| 欧美国产一区二区在线观看| 欧美韩国日本综合| 99成人在线| 欧美午夜激情视频| 亚洲第一网站免费视频| 亚洲韩国一区二区三区| 欧美成人综合一区| 亚洲福利视频网站| 午夜在线视频观看日韩17c| 国产精品最新自拍| 欧美成人在线网站| 亚洲欧美精品| 亚洲韩国日本中文字幕| 久久精彩免费视频| 日韩一级视频免费观看在线| 欧美区一区二区三区| 亚洲一区视频| 欧美黄色网络| 亚洲一区日本| 国产一级一区二区| 欧美连裤袜在线视频| 美日韩精品免费观看视频| 久久免费一区| 久久嫩草精品久久久精品一| 欧美在线播放一区二区| 久久不射电影网| 久久国产色av| 久久精品夜色噜噜亚洲a∨| 久久偷窥视频| 欧美激情1区2区3区| 欧美揉bbbbb揉bbbbb| 国产欧美va欧美va香蕉在| 国产精品久久久久久户外露出 | 欧美激情视频一区二区三区免费 | 国产精品入口福利| 国产精品免费视频xxxx| 国产精品美女主播| 国产精品夜夜嗨| 亚洲第一黄色| 一区二区三区.www| 亚洲中字黄色| 久热精品视频在线观看| 亚洲精品乱码久久久久久久久| 亚洲二区在线| 亚洲无毛电影| 久久综合久久美利坚合众国| 免费精品视频| 国产精品激情偷乱一区二区∴| 国产精品成人一区二区三区吃奶 | 欧美成人在线免费观看| 欧美自拍偷拍| 国产亚洲成精品久久| 亚洲国产欧美一区二区三区同亚洲| 亚洲先锋成人| 亚洲电影在线免费观看| 久久九九国产| 黄页网站一区| 午夜精品影院| 亚洲最新合集| 欧美午夜不卡视频| 一区二区三区日韩精品视频| 亚洲国产精品成人va在线观看| 亚洲欧美资源在线| 国产精品剧情在线亚洲| 国产一级久久| 欧美一区二区在线看| 亚洲欧美精品在线| 国产精品丝袜xxxxxxx| 亚洲欧美欧美一区二区三区| 99re6这里只有精品| 国产欧美日韩视频在线观看| 亚洲图片欧洲图片av| 99国产精品视频免费观看| 国产精品一级在线| 久久久久在线观看| 欧美精选一区| 欧美一级一区| 久久国产日本精品| 亚洲国产精品综合| 亚洲激情另类| 国产农村妇女精品一区二区| 欧美好吊妞视频| 国产精品综合久久久| 亚洲国产一区二区在线| 国产精品毛片a∨一区二区三区| 久久久国产精品一区二区中文| 欧美高清在线视频观看不卡| 亚洲欧美日韩国产中文在线| 中文亚洲欧美| 亚洲精品少妇网址| 久久久国产精品一区二区三区| 亚洲人成小说网站色在线| 一区二区三区三区在线| 在线日韩日本国产亚洲| 久久精品亚洲一区二区| 久久久久久**毛片大全| 欧美日韩在线观看一区二区三区| 麻豆av一区二区三区久久| 国产精品久久久久久久久免费樱桃| 久久亚洲精品网站| 国产精品色婷婷| 亚洲午夜免费福利视频| 日韩午夜电影| 国产精品va在线播放| 亚洲欧洲一区二区三区在线观看| 国产欧美日韩| 久久国内精品视频| 亚洲三级电影全部在线观看高清| 亚洲三级视频在线观看| 欧美mv日韩mv国产网站| 久久综合精品一区| 亚洲毛片一区二区| 欧美日韩一区二区视频在线观看| 亚洲国产精品一区在线观看不卡| 影音先锋亚洲一区| 欧美激情一区二区在线 | 欧美激情视频一区二区三区在线播放 | 亚洲国产综合在线| 亚洲欧洲一区二区天堂久久| 久久亚洲一区二区三区四区| 亚洲高清在线观看| 午夜精品久久久久久久蜜桃app | 亚洲精品久久久一区二区三区| 一区二区三区不卡视频在线观看| 欧美另类一区二区三区| 午夜精品久久久久久久蜜桃app| 久久gogo国模啪啪人体图| 亚洲第一区在线观看| 欧美国产日韩a欧美在线观看| 亚洲亚洲精品三区日韩精品在线视频| 亚洲高清自拍| 欧美视频在线观看一区二区| 欧美在线观看日本一区| 一区二区三区三区在线| 亚洲精品视频免费观看| 免费日韩av| 久久精品99国产精品| 欧美一区二区三区久久精品茉莉花| 在线精品国产欧美| 国产一区二区三区的电影| 国产精品久久久久高潮| 欧美精品激情在线观看| 免费成人黄色片| 免费一级欧美片在线播放| 欧美一区永久视频免费观看| 亚洲免费一在线| 亚洲欧美国内爽妇网| 香蕉成人久久| 久久精品日产第一区二区三区 | 久久全国免费视频| 麻豆视频一区二区| 欧美激情成人在线| 欧美国产高清|