標籤:style http 使用 ar 資料 問題 sp on amp
按照百度百科的介紹:預存程序(Stored Procedure)是在大型資料庫系統中,一組為了完成特定功能的SQL 陳述式集,經編譯後儲存在資料庫中,使用者通過指定預存程序的名字並給出參數(如果該預存程序帶有參數)來執行它。預存程序是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程式都應該用到預存程序。
mysql 中的預存程序的實現是在mysql 5.0 版本中引進的,下面簡單介紹mysql中的預存程序基本文法和使用場合。
DELIMITER //
CREATE PROCEDURE GetAllProducts()
BEGIN
SELECT * FROM products;
END //
DELIMITER ;
這裡建立了一個非常簡單的預存程序,名稱是GetAllProducts ,見名思意,就是得到所有產品。
執行預存程序也很簡單,就是CALL GetAllProducts()即可。begin 和 end 之間就是預存程序的具體操作。下面介紹預存程序的參數形式使用:
DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(IN countryName VARCHAR(255))
BEGIN
SELECT city, phone
FROM offices
WHERE country = countryName;
END //
DELIMITER ;
通過輸入參數的傳入countryName我們可以通過country來得到這個國家城市對應的電話。
DELIMITER $$
CREATE PROCEDURE CountOrderByStatus(
IN orderStatus VARCHAR(25),
OUT total INT)
BEGIN
SELECT count(orderNumber)
INTO total
FROM orders
WHERE status = orderStatus;
END$$
DELIMITER ;
這個預存程序不但有輸入參數,還有輸出參數,通過執行這個預存程序,我們就可以得到不同訂單狀態下的訂單數目,並且把這個值賦給索要傳遞的變數,這些只是簡單的預存程序。實際應用中,我們的預存程序可能一個就有幾百行,甚至上千行,它裡面完成了一系列操作。月底的時候,可能我們僅僅通過執行一個call BaoBiao();的預存程序,就把報表所需要的資料都傳遞賦值完成了。
DELIMITER $$
CREATE PROCEDURE `Capitalize`(INOUT str VARCHAR(1024))
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE myc, pc CHAR(1);
DECLARE outstr VARCHAR(1000) DEFAULT str;
WHILE i <= CHAR_LENGTH(str) DO
SET myc = SUBSTRING(str, i, 1);
SET pc = CASE WHEN i = 1 THEN ‘ ‘
ELSE SUBSTRING(str, i - 1, 1)
END;
IF pc IN (‘ ‘, ‘&‘, ‘‘‘‘, ‘_‘, ‘?‘, ‘;‘, ‘:‘, ‘!‘, ‘,‘, ‘-‘, ‘/‘, ‘(‘, ‘.‘) THEN
SET outstr = INSERT(outstr, i, 1, UPPER(myc));
END IF;
SET i = i + 1;
END WHILE;
SET str = outstr;
END$$
DELIMITER ;
這個預存程序是把標準的語句中的首字母變成大寫:
比如:set @str = ‘this is a store‘;
CALL Capitalize($str);
select $str;
得到的語句是:This Is A Store
如果:set @str= ‘this is a store procedure& test!&abc‘;
CALL Capitalize($str);
select $str;
得到的語句是: This Is A Store Procedure&tTst!&&Ac 會出現一些問題
需要讀者們自己去修改這個預存程序了。
mysql 預存程序