MySQL 存儲(chǔ)過(guò)程

原文:http://www.runoob.com/w3cnote/mysql-stored-procedure.html

MySQL 5.0 版本開(kāi)始支持存儲(chǔ)過(guò)程镶骗。

存儲(chǔ)過(guò)程(Stored Procedure)是一種在數(shù)據(jù)庫(kù)中存儲(chǔ)復(fù)雜程序哀澈,以便外部程序調(diào)用的一種數(shù)據(jù)庫(kù)對(duì)象。

存儲(chǔ)過(guò)程是為了完成特定功能的SQL語(yǔ)句集碍庵,經(jīng)編譯創(chuàng)建并保存在數(shù)據(jù)庫(kù)中,用戶可通過(guò)指定存儲(chǔ)過(guò)程的名字并給定參數(shù)(需要時(shí))來(lái)調(diào)用執(zhí)行悟狱。

存儲(chǔ)過(guò)程思想上很簡(jiǎn)單静浴,就是數(shù)據(jù)庫(kù) SQL 語(yǔ)言層面的代碼封裝與重用。

優(yōu)點(diǎn)

存儲(chǔ)過(guò)程可封裝挤渐,并隱藏復(fù)雜的商業(yè)邏輯苹享。

存儲(chǔ)過(guò)程可以回傳值,并可以接受參數(shù)浴麻。

存儲(chǔ)過(guò)程無(wú)法使用 SELECT 指令來(lái)運(yùn)行得问,因?yàn)樗亲映绦颍c查看表软免,數(shù)據(jù)表或用戶定義函數(shù)不同宫纬。

存儲(chǔ)過(guò)程可以用在數(shù)據(jù)檢驗(yàn),強(qiáng)制實(shí)行商業(yè)邏輯等膏萧。

缺點(diǎn)

存儲(chǔ)過(guò)程漓骚,往往定制化于特定的數(shù)據(jù)庫(kù)上蝌衔,因?yàn)橹С值木幊陶Z(yǔ)言不同。當(dāng)切換到其他廠商的數(shù)據(jù)庫(kù)系統(tǒng)時(shí)蝌蹂,需要重寫(xiě)原有的存儲(chǔ)過(guò)程噩斟。

存儲(chǔ)過(guò)程的性能調(diào)校與撰寫(xiě),受限于各種數(shù)據(jù)庫(kù)系統(tǒng)孤个。

一剃允、存儲(chǔ)過(guò)程的創(chuàng)建和調(diào)用

存儲(chǔ)過(guò)程就是具有名字的一段代碼,用來(lái)完成一個(gè)特定的功能齐鲤。

創(chuàng)建的存儲(chǔ)過(guò)程保存在數(shù)據(jù)庫(kù)的數(shù)據(jù)字典中斥废。

創(chuàng)建存儲(chǔ)過(guò)程

···

CREATE? ? [DEFINER = { user | CURRENT_USER }]

 PROCEDURE sp_name ([proc_parameter[,...]])? ? [characteristic ...] routine_body proc_parameter:

? ? [ IN | OUT | INOUT ] param_name type characteristic:

? ? COMMENT 'string'? | LANGUAGE SQL? | [NOT] DETERMINISTIC? | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

? | SQL SECURITY { DEFINER | INVOKER }

routine_body:

  Valid SQL routine statement

[begin_label:] BEGIN  [statement_list]

    ……END [end_label]

···

MYSQL 存儲(chǔ)過(guò)程中的關(guān)鍵語(yǔ)法

聲明語(yǔ)句結(jié)束符,可以自定義:

DELIMITER $$或DELIMITER //

聲明存儲(chǔ)過(guò)程:

CREATE PROCEDURE demo_in_parameter(IN p_in int)? ? ?

存儲(chǔ)過(guò)程開(kāi)始和結(jié)束符號(hào):

BEGIN .... END? ?

變量賦值:

SET @p_in=1?

變量定義:

DECLARE l_int int unsigned default 4000000;

創(chuàng)建mysql存儲(chǔ)過(guò)程佳遂、存儲(chǔ)函數(shù):

create procedure 存儲(chǔ)過(guò)程名(參數(shù))

存儲(chǔ)過(guò)程體:

create function 存儲(chǔ)函數(shù)名(參數(shù))

實(shí)例

創(chuàng)建數(shù)據(jù)庫(kù)营袜,備份數(shù)據(jù)表用于示例操作:

mysql> create database db1;mysql> use db1;? ? mysql> create table PLAYERS as select * from TENNIS.PLAYERS;mysql> create table MATCHES? as select * from TENNIS.MATCHES;

下面是存儲(chǔ)過(guò)程的例子,刪除給定球員參加的所有比賽:

mysql> delimiter $$  #將語(yǔ)句的結(jié)束符號(hào)從分號(hào);臨時(shí)改為兩個(gè)$$(可以是自定義)mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)? ? -> BEGIN? ? ->   DELETE FROM MATCHES? ? ->? ? WHERE playerno = p_playerno;

? ? -> END$$Query OK, 0 rows affected (0.01 sec) mysql> delimiter;  #將語(yǔ)句的結(jié)束符號(hào)恢復(fù)為分號(hào)

解析:默認(rèn)情況下丑罪,存儲(chǔ)過(guò)程和默認(rèn)數(shù)據(jù)庫(kù)相關(guān)聯(lián)荚板,如果想指定存儲(chǔ)過(guò)程創(chuàng)建在某個(gè)特定的數(shù)據(jù)庫(kù)下,那么在過(guò)程名前面加數(shù)據(jù)庫(kù)名做前綴吩屹。 在定義過(guò)程時(shí)跪另,使用?DELIMITER $$?命令將語(yǔ)句的結(jié)束符號(hào)從分號(hào)?;?臨時(shí)改為兩個(gè)?$$,使得過(guò)程體中使用的分號(hào)被直接傳遞到服務(wù)器煤搜,而不會(huì)被客戶端(如mysql)解釋免绿。

調(diào)用存儲(chǔ)過(guò)程:

call sp_name[(傳參)];

mysql> select * from MATCHES;

+---------+--------+----------+-----+------+

| MATCHNO | TEAMNO | PLAYERNO | WON | LOST |

+---------+--------+----------+-----+------+

|? ? ? 1 |? ? ? 1 |? ? ? ? 6 |? 3 |? ? 1 |

|? ? ? 7 |? ? ? 1 |? ? ? 57 |? 3 |? ? 0 |

|? ? ? 8 |? ? ? 1 |? ? ? ? 8 |? 0 |? ? 3 |

|? ? ? 9 |? ? ? 2 |? ? ? 27 |? 3 |? ? 2 |

|? ? ? 11 |? ? ? 2 |? ? ? 112 |? 2 |? ? 3 |

+---------+--------+----------+-----+------+5 rows in set (0.00 sec) mysql> call delete_matches(57);Query OK, 1 row affected (0.03 sec) mysql> select * from MATCHES;

+---------+--------+----------+-----+------+

| MATCHNO | TEAMNO | PLAYERNO | WON | LOST |

+---------+--------+----------+-----+------+

|? ? ? 1 |? ? ? 1 |? ? ? ? 6 |? 3 |? ? 1 |

|? ? ? 8 |? ? ? 1 |? ? ? ? 8 |? 0 |? ? 3 |

|? ? ? 9 |? ? ? 2 |? ? ? 27 |? 3 |? ? 2 |

|? ? ? 11 |? ? ? 2 |? ? ? 112 |? 2 |? ? 3 |

+---------+--------+----------+-----+------+4 rows in set (0.00 sec)

解析:在存儲(chǔ)過(guò)程中設(shè)置了需要傳參的變量p_playerno,調(diào)用存儲(chǔ)過(guò)程的時(shí)候擦盾,通過(guò)傳參將57賦值給p_playerno嘲驾,然后進(jìn)行存儲(chǔ)過(guò)程里的SQL操作。

存儲(chǔ)過(guò)程體

存儲(chǔ)過(guò)程體包含了在過(guò)程調(diào)用時(shí)必須執(zhí)行的語(yǔ)句迹卢,例如:dml辽故、ddl語(yǔ)句,if-then-else和while-do語(yǔ)句腐碱、聲明變量的declare語(yǔ)句等

過(guò)程體格式:以begin開(kāi)始誊垢,以end結(jié)束(可嵌套)

BEGIN  BEGIN    BEGIN      statements;

    END  ENDEND

注意:每個(gè)嵌套塊及其中的每條語(yǔ)句,必須以分號(hào)結(jié)束症见,表示過(guò)程體結(jié)束的begin-end塊(又叫做復(fù)合語(yǔ)句compound statement)喂走,則不需要分號(hào)。

為語(yǔ)句塊貼標(biāo)簽:

[begin_label:] BEGIN  [statement_list]END [end_label]

例如:

label1: BEGIN  label2: BEGIN    label3: BEGIN      statements;

    END label3 ;

  END label2;END label1

標(biāo)簽有兩個(gè)作用:

1谋作、增強(qiáng)代碼的可讀性

2芋肠、在某些語(yǔ)句(例如:leave和iterate語(yǔ)句),需要用到標(biāo)簽

二遵蚜、存儲(chǔ)過(guò)程的參數(shù)

MySQL存儲(chǔ)過(guò)程的參數(shù)用在存儲(chǔ)過(guò)程的定義业栅,共有三種參數(shù)類型,IN,OUT,INOUT,形式如:

CREATEPROCEDURE 存儲(chǔ)過(guò)程名([[IN |OUT |INOUT ] 參數(shù)名 數(shù)據(jù)類形...])

IN 輸入?yún)?shù):表示調(diào)用者向過(guò)程傳入值(傳入值可以是字面量或變量)

OUT 輸出參數(shù):表示過(guò)程向調(diào)用者傳出值(可以返回多個(gè)值)(傳出值只能是變量)

INOUT 輸入輸出參數(shù):既表示調(diào)用者向過(guò)程傳入值秒咐,又表示過(guò)程向調(diào)用者傳出值(值只能是變量)

1、in 輸入?yún)?shù)

mysql> delimiter $$mysql> create procedure in_param(in p_in int)? ? -> begin? ? ->   select p_in;

? ? ->   set p_in=2;

? ? ->? ? select P_in;

? ? -> end$$mysql> delimiter ;

mysql> set @p_in=1;

mysql> call in_param(@p_in);

+------+

| p_in |

+------+

|? ? 1 |

+------+

+------+

| P_in |

+------+

|? ? 2 |

+------+

mysql> select @p_in;

+-------+

| @p_in |

+-------+

|? ? 1 |

+-------+

以上可以看出碘裕,p_in 在存儲(chǔ)過(guò)程中被修改携取,但并不影響 @p_id 的值,因?yàn)榍罢邽榫植孔兞堪锟住⒑笳邽槿肿兞俊?/p>

2雷滋、out輸出參數(shù)

mysql> delimiter //mysql> create procedure out_param(out p_out int)? ? ->? begin? ? ->? ? select p_out;

? ? ->? ? set p_out=2;

? ? ->? ? select p_out;

? ? ->? end? ? -> //mysql> delimiter ;

mysql> set @p_out=1;

mysql> call out_param(@p_out);

+-------+

| p_out |

+-------+

|? NULL |

+-------+

  #因?yàn)閛ut是向調(diào)用者輸出參數(shù),不接收輸入的參數(shù)文兢,所以存儲(chǔ)過(guò)程里的p_out為null+-------+

| p_out |

+-------+

|? ? 2 |

+-------+

mysql> select @p_out;

+--------+

| @p_out |

+--------+

|? ? ? 2 |

+--------+

  #調(diào)用了out_param存儲(chǔ)過(guò)程晤斩,輸出參數(shù),改變了p_out變量的值

3姆坚、inout輸入?yún)?shù)

mysql> delimiter $$mysql> create procedure inout_param(inout p_inout int)? ? ->? begin? ? ->? ? select p_inout;

? ? ->? ? set p_inout=2;

? ? ->? ? select p_inout;

? ? ->? end? ? -> $$mysql> delimiter ;

mysql> set @p_inout=1;

mysql> call inout_param(@p_inout);

+---------+

| p_inout |

+---------+

|? ? ? 1 |

+---------+

+---------+

| p_inout |

+---------+

|? ? ? 2 |

+---------+

mysql> select @p_inout;

+----------+

| @p_inout |

+----------+

|? ? ? ? 2 |

+----------+#調(diào)用了inout_param存儲(chǔ)過(guò)程澳泵,接受了輸入的參數(shù),也輸出參數(shù)兼呵,改變了變量

注意:

1兔辅、如果過(guò)程沒(méi)有參數(shù),也必須在過(guò)程名后面寫(xiě)上小括號(hào)例:

CREATE PROCEDURE sp_name ([proc_parameter[,...]]) ……

2击喂、確保參數(shù)的名字不等于列的名字维苔,否則在過(guò)程體中,參數(shù)名被當(dāng)做列名來(lái)處理

建議:

輸入值使用in參數(shù)懂昂。

返回值使用out參數(shù)介时。

inout參數(shù)就盡量的少用。

三凌彬、變量

1. 變量定義

局部變量聲明一定要放在存儲(chǔ)過(guò)程體的開(kāi)始:

DECLAREvariable_name [,variable_name...] datatype [DEFAULT value];

其中沸柔,datatype 為 MySQL 的數(shù)據(jù)類型,如: int, float, date,varchar(length)

例如:

DECLARE l_int int unsigned default 4000000;? DECLARE l_numeric number(8,2) DEFAULT 9.95;? DECLARE l_date date DEFAULT '1999-12-31';? DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59';? DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded';

2. 變量賦值

SET 變量名 = 表達(dá)式值 [,variable_name = expression ...]

3. 用戶變量

在MySQL客戶端使用用戶變量:

mysql > SELECT 'Hello World' into @x;? mysql > SELECT @x;?

+-------------+?

|? @x? ? ? ? |?

+-------------+?

| Hello World |?

+-------------+? mysql > SET @y='Goodbye Cruel World';? mysql > SELECT @y;?

+---------------------+?

|? ? @y? ? ? ? ? ? ? |?

+---------------------+?

| Goodbye Cruel World |?

+---------------------+?

mysql > SET @z=1+2+3;? mysql > SELECT @z;?

+------+?

| @z? |?

+------+?

|? 6? |?

+------+

在存儲(chǔ)過(guò)程中使用用戶變量

mysql > CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');? mysql > SET @greeting='Hello';? mysql > CALL GreetWorld( );?

+----------------------------+?

| CONCAT(@greeting,' World') |?

+----------------------------+?

|? Hello World? ? ? ? ? ? ? |?

+----------------------------+

在存儲(chǔ)過(guò)程間傳遞全局范圍的用戶變量

mysql> CREATE PROCEDURE p1()? SET @last_procedure='p1';? mysql> CREATE PROCEDURE p2() SELECT CONCAT('Last procedure was ',@last_procedure);? mysql> CALL p1( );? mysql> CALL p2( );?

+-----------------------------------------------+?

| CONCAT('Last procedure was ',@last_proc? ? ? |?

+-----------------------------------------------+?

| Last procedure was p1? ? ? ? ? ? ? ? ? ? ? ? |?

+-----------------------------------------------+

注意:

1铲敛、用戶變量名一般以@開(kāi)頭

2褐澎、濫用用戶變量會(huì)導(dǎo)致程序難以理解及管理

四、注釋

MySQL 存儲(chǔ)過(guò)程可使用兩種風(fēng)格的注釋

兩個(gè)橫桿--:該風(fēng)格一般用于單行注釋原探。

c 風(fēng)格: 一般用于多行注釋乱凿。

例如:

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc1 --name存儲(chǔ)過(guò)程名?

? ? -> (IN parameter1 INTEGER)?

? ? -> BEGIN?

? ? -> DECLARE variable1 CHAR(10);?

? ? -> IF parameter1 = 17 THEN?

? ? -> SET variable1 = 'birds';?

? ? -> ELSE

? ? -> SET variable1 = 'beasts';?

? ? -> END IF;?

? ? -> INSERT INTO table1 VALUES (variable1);?

? ? -> END?

? ? -> //? mysql > DELIMITER ;

MySQL存儲(chǔ)過(guò)程的調(diào)用

用call和你過(guò)程名以及一個(gè)括號(hào)顽素,括號(hào)里面根據(jù)需要咽弦,加入?yún)?shù),參數(shù)包括輸入?yún)?shù)胁出、輸出參數(shù)型型、輸入輸出參數(shù)。具體的調(diào)用方法可以參看上面的例子全蝶。

MySQL存儲(chǔ)過(guò)程的查詢

我們像知道一個(gè)數(shù)據(jù)庫(kù)下面有那些表闹蒜,我們一般采用?showtables;?進(jìn)行查看寺枉。那么我們要查看某個(gè)數(shù)據(jù)庫(kù)下面的存儲(chǔ)過(guò)程,是否也可以采用呢绷落?答案是姥闪,我們可以查看某個(gè)數(shù)據(jù)庫(kù)下面的存儲(chǔ)過(guò)程,但是是另一鐘方式砌烁。

我們可以用以下語(yǔ)句進(jìn)行查詢:

selectname from mysql.proc where db='數(shù)據(jù)庫(kù)名';或者selectroutine_name from information_schema.routines where routine_schema='數(shù)據(jù)庫(kù)名';或者showprocedure status where db='數(shù)據(jù)庫(kù)名';

如果我們想知道筐喳,某個(gè)存儲(chǔ)過(guò)程的詳細(xì),那我們又該怎么做呢函喉?是不是也可以像操作表一樣用describe 表名進(jìn)行查看呢避归?

答案是:我們可以查看存儲(chǔ)過(guò)程的詳細(xì),但是需要用另一種方法:

SHOWCREATE PROCEDURE 數(shù)據(jù)庫(kù).存儲(chǔ)過(guò)程名;

就可以查看當(dāng)前存儲(chǔ)過(guò)程的詳細(xì)管呵。

MySQL存儲(chǔ)過(guò)程的修改

ALTER PROCEDURE

更改用 CREATE PROCEDURE 建立的預(yù)先指定的存儲(chǔ)過(guò)程梳毙,其不會(huì)影響相關(guān)存儲(chǔ)過(guò)程或存儲(chǔ)功能。

MySQL存儲(chǔ)過(guò)程的刪除

刪除一個(gè)存儲(chǔ)過(guò)程比較簡(jiǎn)單捐下,和刪除表一樣:

DROPPROCEDURE

從 MySQL 的表格中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程账锹。

MySQL存儲(chǔ)過(guò)程的控制語(yǔ)句

(1). 變量作用域

內(nèi)部的變量在其作用域范圍內(nèi)享有更高的優(yōu)先權(quán)冠跷,當(dāng)執(zhí)行到 end噪窘。變量時(shí)斜筐,內(nèi)部變量消失请毛,此時(shí)已經(jīng)在其作用域外榨乎,變量不再可見(jiàn)了节槐,應(yīng)為在存儲(chǔ)過(guò)程外再也不能找到這個(gè)申明的變量鸭限,但是你可以通過(guò) out 參數(shù)或者將其值指派給會(huì)話變量來(lái)保存其值闰蚕。

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc3()?

? ? -> begin

? ? -> declare x1 varchar(5) default 'outer';?

? ? -> begin

? ? -> declare x1 varchar(5) default 'inner';?

? ? ? -> select x1;?

? ? ? -> end;?

? ? ? -> select x1;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

(2). 條件語(yǔ)句

1. if-then-else 語(yǔ)句

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc2(IN parameter int)?

? ? -> begin

? ? -> declare var int;?

? ? -> set var=parameter+1;?

? ? -> if var=0 then

? ? -> insert into t values(17);?

? ? -> end if;?

? ? -> if parameter=0 then

? ? -> update t set s1=s1+1;?

? ? -> else

? ? -> update t set s1=s1+2;?

? ? -> end if;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

2. case語(yǔ)句:

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc3 (in parameter int)?

? ? -> begin

? ? -> declare var int;?

? ? -> set var=parameter+1;?

? ? -> case var?

? ? -> when 0 then?

? ? -> insert into t values(17);?

? ? -> when 1 then?

? ? -> insert into t values(18);?

? ? -> else?

? ? -> insert into t values(19);?

? ? -> end case;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ; case? ? when var=0 then? ? ? ? insert into t values(30);

? ? when var>0 then? ? when var<0 then? ? elseend case

(3). 循環(huán)語(yǔ)句

1. while ···· end while

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc4()?

? ? -> begin

? ? -> declare var int;?

? ? -> set var=0;?

? ? -> while var<6 do?

? ? -> insert into t values(var);?

? ? -> set var=var+1;?

? ? -> end while;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

while 條件 do? ? --循環(huán)體endwhile

2. repeat···· end repea

它在執(zhí)行操作后檢查結(jié)果排抬,而 while 則是執(zhí)行前進(jìn)行檢查懂从。

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc5 ()?

? ? -> begin?

? ? -> declare v int;?

? ? -> set v=0;?

? ? -> repeat?

? ? -> insert into t values(v);?

? ? -> set v=v+1;?

? ? -> until v>=5?

? ? -> end repeat;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

repeat

? ? --循環(huán)體until 循環(huán)條件? end repeat;

3. loop ·····endloop

loop 循環(huán)不需要初始條件,這點(diǎn)和 while 循環(huán)相似蹲蒲,同時(shí)和 repeat 循環(huán)一樣不需要結(jié)束條件, leave 語(yǔ)句的意義是離開(kāi)循環(huán)番甩。

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc6 ()?

? ? -> begin

? ? -> declare v int;?

? ? -> set v=0;?

? ? -> LOOP_LABLE:loop?

? ? -> insert into t values(v);?

? ? -> set v=v+1;?

? ? -> if v >=5 then

? ? -> leave LOOP_LABLE;?

? ? -> end if;?

? ? -> end loop;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

4. LABLES 標(biāo)號(hào):

標(biāo)號(hào)可以用在 begin repeat while 或者 loop 語(yǔ)句前,語(yǔ)句標(biāo)號(hào)只能在合法的語(yǔ)句前面使用届搁≡笛Γ可以跳出循環(huán),使運(yùn)行指令達(dá)到復(fù)合語(yǔ)句的最后一步卡睦。

(4). ITERATE迭代

ITERATE 通過(guò)引用復(fù)合語(yǔ)句的標(biāo)號(hào),來(lái)從新開(kāi)始復(fù)合語(yǔ)句:

mysql > DELIMITER //? mysql > CREATE PROCEDURE proc10 ()?

? ? -> begin

? ? -> declare v int;?

? ? -> set v=0;?

? ? -> LOOP_LABLE:loop?

? ? -> if v=3 then?

? ? -> set v=v+1;?

? ? -> ITERATE LOOP_LABLE;?

? ? -> end if;?

? ? -> insert into t values(v);?

? ? -> set v=v+1;?

? ? -> if v>=5 then

? ? -> leave LOOP_LABLE;?

? ? -> end if;?

? ? -> end loop;?

? ? -> end;?

? ? -> //? mysql > DELIMITER ;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宴胧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子表锻,更是在濱河造成了極大的恐慌恕齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬逊,死亡現(xiàn)場(chǎng)離奇詭異显歧,居然都是意外死亡仪或,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門士骤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)范删,“玉大人,你說(shuō)我怎么就攤上這事拷肌∑刻樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵廓块,是天一觀的道長(zhǎng)厢绝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)带猴,這世上最難降的妖魔是什么昔汉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮拴清,結(jié)果婚禮上靶病,老公的妹妹穿的比我還像新娘。我一直安慰自己口予,他們只是感情好娄周,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著沪停,像睡著了一般煤辨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上木张,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天众辨,我揣著相機(jī)與錄音,去河邊找鬼舷礼。 笑死鹃彻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妻献。 我是一名探鬼主播蛛株,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼育拨!你這毒婦竟也來(lái)了谨履?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤至朗,失蹤者是張志新(化名)和其女友劉穎屉符,沒(méi)想到半個(gè)月后剧浸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锹引,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡矗钟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嫌变。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吨艇。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腾啥,靈堂內(nèi)的尸體忽然破棺而出东涡,到底是詐尸還是另有隱情,我是刑警寧澤倘待,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布疮跑,位于F島的核電站,受9級(jí)特大地震影響凸舵,放射性物質(zhì)發(fā)生泄漏祖娘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一啊奄、第九天 我趴在偏房一處隱蔽的房頂上張望渐苏。 院中可真熱鬧,春花似錦菇夸、人聲如沸琼富。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鞠眉。三九已至,卻和暖如春择诈,著一層夾襖步出監(jiān)牢的瞬間凡蚜,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工吭从, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留朝蜘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓涩金,卻偏偏與公主長(zhǎng)得像谱醇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子步做,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自這里 存儲(chǔ)過(guò)程簡(jiǎn)介 我們常用的操作數(shù)據(jù)庫(kù)語(yǔ)言SQL語(yǔ)句在執(zhí)行的時(shí)候需要要先編譯副渴,然后執(zhí)行,而存儲(chǔ)過(guò)程(Sto...
    杜七閱讀 2,382評(píng)論 4 27
  • SQL語(yǔ)句需要先編譯然后執(zhí)行全度,而存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集煮剧,...
    MIN_ZJM閱讀 639評(píng)論 0 1
  • 原文鏈接 MySQL存儲(chǔ)過(guò)程詳解 1.存儲(chǔ)過(guò)程簡(jiǎn)介 我們常用的操作數(shù)據(jù)庫(kù)語(yǔ)言SQL語(yǔ)句在執(zhí)行的時(shí)候需要要先編譯,然...
    亞斯咪妮閱讀 2,671評(píng)論 1 30
  • 任務(wù)需求:定時(shí)執(zhí)行的任務(wù),調(diào)用存儲(chǔ)過(guò)程勉盅,進(jìn)行數(shù)據(jù)遷移佑颇。 存儲(chǔ)過(guò)程相關(guān)總結(jié):(存儲(chǔ)過(guò)程的創(chuàng)建 不能伴隨有if exi...
    時(shí)待吾閱讀 3,068評(píng)論 0 4
  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 7,787評(píng)論 5 116