mysql 預存程序

來源:互聯網
上載者:User

標籤:

預存程序介紹

       預存程序是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中。使用者通過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來執行它。

        預存程序可由應用程式通過一個調用來執行,而且允許使用者聲明變數 。 同時,預存程序可以接收和輸出參數、返回執行預存程序的狀態值,也可以嵌套調用。

  優點:

           1、減少網路通訊量。調用一個行數不多的預存程序與直接調用SQL語句的網路通訊量可能不會有很大的差別,可是如果預存程序包含上百行SQL語句,那麼其效能絕對比一條一條的調用SQL語句要高得多。

           2、執行速度更快。預存程序建立的時候,資料庫已經對其進行了一次解析和最佳化。其次,預存程序一旦執行,在記憶體中就會保留一份這個預存程序,這樣下次再執行同樣的預存程序時,可以從記憶體中直接中讀取。

           3、更強的安全性。預存程序是通過向使用者授予許可權(而不是基於表),它們可以提供對特定資料的訪問,提高代碼安全,比如防止 SQL注入。

  缺點:

          1、可移植性方面:當從一種資料庫遷移到另外一種資料庫時,不少的預存程序的編寫要進行部分修改。

          2、預存程序需要花費一定的學習時間去學習

  建立預存程序: 

   1、沒有參數   

CREATE PROCEDURE helloWord ()    LANGUAGE SQL      DETERMINISTIC    SQL SECURITY DEFINER    COMMENT ‘A procedure‘    BEGIN    SELECT ‘Hello World !‘;END1) 首先在定義好終結符後,使用CREATE PROCEDURE+預存程序名的方法建立預存程序,LANGUAGE選項指定了使用的語言,這裡預設是使用SQL。  2) DETERMINISTIC關鍵詞的作用是,當確定每次的預存程序的輸入和輸出都是相同的內容時,可以使用該關鍵詞,否則預設為NOT DETERMINISTIC。  3) SQL SECURITY關鍵詞,是表示調用時檢查使用者的許可權。當值為INVOKER時,表示是使用者調用該預存程序時檢查,預設為DEFINER,即建立預存程序時檢查。  4) COMMENT部分是預存程序的注釋說明部分。  5) 在BEGIN END部分中,是預存程序的主體部分。//刪除預存程序DROP PROCEDURE IF EXISTS helloWord;//調用預存程序----->也可以傳遞參數CALL helloWord()
View Code

   2、帶參數

//帶參數的預存程序CREATE PROCEDURE selectUser(IN userCode VARCHAR(255))    BEGIN        select * from tuser where user_code=userCode;    ENDCALL selectUser(‘9001‘);create procedure usp_GetEmployeeName(IN userCode VARCHAR(255), OUT name VARCHAR(255)) begin        select regName into name from tuser where user_code=userCode; endCALL usp_GetEmployeeName(‘9001‘,@uName);create procedure pr_param_inout(inout id int)    begin    select id as id_inner_1;  -- id 值為調用者傳進來的值    if (id is not null) then    set id = id + 1;    select id as id_inner_2;    else    select 1 into id;    end if;    select id as id_inner_3;    end;set @id = 10;call pr_param_inout(@id);
View Code

 

mysql 預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.