靈魂-放水

          為學日益,為道日損。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

          在MS SQL Server 2000 中,創建一個存儲過程有兩種方法:一種是使用Transaction-SQL 命令Create Procedure, 另一種是使用圖形化管理工具Enterprise Manager。 用Transaction- SQL 創建存儲過程是一種較為快速的方法,但對于初學者,使用Enterprise Manager 更易理解,更為簡單。
          當創建存儲過程時,需要確定存儲過程的三個組成部分;

          ?

          • 所有的輸入參數以及傳給調用者的輸出參數。
          • 被執行的針對數據庫的操作語句,包括調用其它存儲過程的語句;
          • 返回給調用者的狀態值,以指明調用是成功還是失敗。
          12.2.1 使用Enterprise Manager 創建存儲過程
          按照下述步驟用Enterprise Manager 創建一個存儲過程:

          ?

          • 啟動Enterprise Manager, 登錄到要使用的服務器。
          • 選擇要創建存儲過程的數據庫,在左窗格中單擊Stored Procedure 文件夾,此時在右窗格中顯示該數據庫的所有存儲過程,如圖12-1 所示。
          • 右擊Stored Procedure 文件夾,在彈出菜單中選擇New Stored Procedure, 此時打開創建存儲過程對話框,如圖12-2 所示。

          • 輸入存儲過程正文。
          • 單擊Check Syntax, 檢查語法是否正確。
          • 單擊OK, 保存。
          • 在右窗格中,右擊該存儲過程,在彈出菜單中選擇All task, 選擇ManagePermissions, 設置權限,如圖12-3 所示。

            ?

          12.2.2 用CREATE PROCEDURE 命令創建存儲過程
          通過運用Create Procedure 命令能夠創建存儲過程,在創建存儲過程之前,應該考慮到以下幾個方面:

          ?

          • 在一個批處理中,Create Procedure 語句不能與其它SQL 語句合并在一起;
          • 數據庫所有者具有默認的創建存儲過程的權限,它可把該權限傳遞給其它的用戶;
          • 存儲過程作為數據庫對象其命名必須符合命名規則;
          • 只能在當前數據庫中創建屬于當前數據庫的存儲過程。
          用Create Procedure 創建存儲過程的語法規則如下:
          CREATE PROC [ EDURE ] procedure_name [ ; number ]
          [ { @parameter data_type }
          [ VARYING ] [ = default ] [ OUTPUT ]
          ] [ ,...n ]
          [ WITH
          { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
          [ FOR REPLICATION ]
          AS sql_statement [ ...n ]

          各參數的含義如下:

          ?

          • procedure_name
            是要創建的存儲過程的名字,它后面跟一個可選項number, 它是一個整數,用來區別一組同名的存儲過程。存儲過程的命名必須符合命名規則,在一個數據庫中或對其所有者而言,存儲過程的名字必須惟一。
          • @parameter
            是存儲過程的參數。在Create Procedure 語句中,可以聲明一個或多個參數。當調用該存儲過程時,用戶必須給出所有的參數值,除非定義了參數的缺省值。若參數的形式以 @parameter=value 出現,則參數的次序可以不同,否則用戶給出的參數值必須與參數列表中參數的順序保持一致。若某一參數以@parameter=value 形式給出,那么其它參數也必須以該形式給出。一個存儲過程至多有1024 個參數。
          • Data_type
            是參數的數據類型。在存儲過程中,所有的數據類型包括text 和image 都可被用作參數。但是,游標cursor 數據類型只能被用作OUTPUT 參數。當定義游標數據類型時,也必須對VARING 和OUTPUT 關鍵字進行定義。對可能是游標型數據類型的OUTPUT 參數而言,參數的最大數目沒有限制。
          • VARYING
            指定由OUTPUT 參數支持的結果集,僅應用于游標型參數。
          • Default
            是指參數的缺省值。如果定義了缺省值,那么即使不給出參數值,則該存儲過程仍能被調用。缺省值必須是常數,或者是空值。
          • OUTPUT
            表明該參數是一個返回參數。用OUTPUT 參數可以向調用者返回信息。Text 類型參數不能用作OUTPUT 參數。
          • RECOMPILE
            指明SQL Server 并不保存該存儲過程的執行計劃,該存儲過程每執行一次都又要重新編譯。
          • ENCRYPTION
            表明SQL Server 加密了syscomments 表,該表的text 字段是包含有Create procedure語句的存儲過程文本,使用該關鍵字無法通過查看syscomments 表來查看存儲過程內容。
          • FOR REPLICATION
            選項指明了為復制創建的存儲過程不能在訂購服務器上執行,只有在創建過濾存儲過程時(僅當進行數據復制時過濾存儲過程才被執行),才使用該選項。FOR REPLICATION與WITH RECOMPILE 選項是互不兼容的。
          • AS
            指明該存儲過程將要執行的動作。
          • Sql_statement
            是任何數量和類型的包含在存儲過程中的SQL 語句。

          ?

          另外應該指出,一個存儲過程的最大尺寸為128M, 用戶定義的存儲過程必須創建在當前數據庫中。
          ?下面將給出幾個例子,用來詳細介紹如何創建包含有各種保留字的存儲過程。




          ????
          posted on 2007-01-08 10:52 放水老倌 閱讀(1343) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 鱼台县| 搜索| 旺苍县| 聂拉木县| 双辽市| 永修县| 武穴市| 建水县| 凭祥市| 宜章县| 平原县| 论坛| 夏河县| 剑阁县| 岳西县| 汉川市| 昌平区| 灵川县| 土默特右旗| 孝昌县| 墨江| 上饶县| 方山县| 许昌县| 定结县| 屏边| 德惠市| 利辛县| 武胜县| 昌都县| 北安市| 庐江县| 台前县| 龙口市| 萍乡市| 辽中县| 游戏| 富民县| 松溪县| 怀柔区| 东兴市|