- 論壇徽章:
- 0
|
今天再看數(shù)據(jù)庫(kù)設(shè)計(jì)的書的時(shí)候,發(fā)現(xiàn)自己以前忽略了存儲(chǔ)過程部分。說懂?dāng)?shù)據(jù)庫(kù),并不僅僅是說你會(huì)用幾個(gè)sql語(yǔ)句就可以了。這一點(diǎn)遠(yuǎn)遠(yuǎn)不夠,尤其是對(duì)于一個(gè)架構(gòu)師而言,數(shù)據(jù)庫(kù)里面保存的數(shù)據(jù)是對(duì)于以數(shù)據(jù)為中心的企業(yè)是至關(guān)重要的。存儲(chǔ)過程是數(shù)據(jù)庫(kù)中有趣的東西,以前的時(shí)候,我不怎么用他,一般喜歡直接用其它的腳本語(yǔ)言來進(jìn)行數(shù)據(jù)庫(kù)交互,但是,算來不是很方便。SQL語(yǔ)言是一種非過程化的語(yǔ)言,你不能進(jìn)行判斷,循環(huán),但是使用存儲(chǔ)過程,問題就迎刃而解了。當(dāng)建立好存儲(chǔ)過程之后,你就可以像編程語(yǔ)言中的函數(shù)調(diào)用一樣,去方便的使用他。一個(gè)最簡(jiǎn)單的存儲(chǔ)過程,當(dāng)然,他基本上沒有什么用處。DROP PROCEDURE IF EXISTS mybase.phelloworld;CREATE PROCEDURE mybase.`phelloworld`()BEGIN SELECT 'HELLO WORLD!' AS F;END; //執(zhí)行他即可,然后一個(gè)名稱為phelloworld的存儲(chǔ)過程就可以用了?梢赃@樣來調(diào)用:call phelloworld();就會(huì)直接結(jié)果了。
如果要找一個(gè)較有實(shí)用點(diǎn)的例子,你需要帶上參數(shù)。DROP PROCEDURE IF EXISTS mybase.p8;CREATE PROCEDURE mybase.`p8`(n_age int)BEGIN DECLARE a INT; DECLARE b int; SET a = 5; SET b = 5;
INSERT INTO human VALUES ("dragon", a);
SELECT age * 2 FROM human WHERE human.age > n_age;END; //調(diào)用方式: call p8(24),類似這樣的方法,這樣一來,你可以將常用的功能來建立為存儲(chǔ)過程,方便以后使用。
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/15586/showart_2144684.html |
|