MySQL儲存過程查詢和刪除的問題

2022-12-16 15:30:54 字數 3067 閱讀 8389

1樓:匿名使用者

建立:delimiter //

create procedure my_add(in a int, in b int, out c int)

begin

if a is null then set a = 0;

end if;

if b is null then set b = 0;

end if;

set c = a + b;

end;

//delimiter ;

檢視:方法一:(直接查詢,比較實用,檢視當前自定義的儲存過程)

select `specific_name` from mysql.proc where `db` = 'your_db_name' and `type` = 'procedure'

方法二:(檢視資料庫裡所有儲存過程+內容)

show procedure status;

方法三:(檢視當前資料庫裡儲存過程列表)

select specific_name from mysql.proc ;

方法四:(檢視某一個儲存過程的具體內容)

select body from mysql.proc where specific_name = 'your_proc_name';

檢視儲存過程或函式的建立** :

show create procedure your_proc_name;

show create function your_func_name;

呼叫:mysql> set @a = 10;

query ok, 0 rows affected (0.00 sec)

mysql> set @b = 20;

query ok, 0 rows affected (0.00 sec)

mysql> set @c = 0;

query ok, 0 rows affected (0.00 sec)

mysql>select @c;

+------+

| @c |

+------+

| 0 |

+------+

mysql> call my_add(@a, @b, @c);

query ok, 0 rows affected (0.00 sec)

mysql> select @a, @b, @c;

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

| @a | @b | @c |

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

| 10 | 20 | 30 |

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

1 row in set (0.00 sec)

刪除drop procedure your_proc_name;

怎麼在mysql中查詢已建立的儲存過程

2樓:灩麗

1、首先先建立一個儲存過程,**如圖,儲存過程主要的功能是為表jingyan插入新的資料。

2、執行這幾行**,看到執行成功,資料庫裡現在已經有儲存過程sp_jy。

3、先看下jingyan表裡目前的陣列,如圖,只有三行資料。

4、在mysql裡,呼叫儲存過程,只需要用call關鍵字,帶上儲存過程的名稱就行了,當然有引數時,需要帶個引數。

5、執行了這個儲存過程的呼叫之後,再看下jingyan表裡的資料,可以看到現在的資料已經是四條了,說明呼叫儲存過程成功插入了一條新的資料。

6、再新增一個儲存過程,該儲存過程用select語句,返回表資料。

7、呼叫查詢新的儲存過程,可以看到結果裡也是返回表資料。

3樓:匿名使用者

可以用 命令"show procedure status"檢視所有的儲存過程或檢索系統表"mysql.proc"來查詢已有的儲存過程。

例如:用show procedure status命令檢視:

-- 檢視所有的儲存過程

show procedure status;

-- 檢視特定資料庫儲存過程

show procedure status where db='test';

-- 用指定的登入名檢視該使用者建立的儲存過程

show procedure status where definer='root@localhost'; -- @localhost為使用者登入位置(本地登入)

-- 檢視指定時間段建立儲存過程

show procedure status where created between '2017-02-17 00:00:00'

and '2017-02-17 23:59:59';

用系統表mysql.proc來檢視:

-- 檢視所有的儲存過程資訊

select * from mysql.proc;

-- 檢視特定資料庫裡的儲存過程

select * from mysql.proc where db='test';

-- 檢視某個使用者定義的儲存過程

select * from mysql.proc where definer='root@localhost';

-- 檢視某時間段建立的儲存過程

select * from mysql.proc where created between '2017-02-17 00:00:00'

and '2017-02-17 23:59:59';

mysql的儲存過程如何返回查詢到的行資料?

4樓:

out返回只能是確定的某種型別的一個值,例如varchar或者int等等,你想返回多條記錄的話只需要在最後加上一個或者多個select語句就行了啊,然後在外面用resultset物件接住就行了。

5樓:

別想了,儲存過程不是你這樣用的,儲存過程只能返回基本的資料型別;當然如果要這樣弄的話,你可以把資料儲存到另一個表中,然後根據返回的資料查詢另一個表。

你這需求也不需要用到儲存過程,直接select語句不就行了嗎

mysql怎麼查詢重複的資料,MySql怎麼查詢重複的資料

select name,sum num from table group by name group by 分組查詢可以實現,根據名稱分組查詢累加數量 select sum 數量 名稱 from table group by 名稱 你按照這個寫一下就可以了 select name,sum numbe...

mysql查詢欄位的值在哪個表,mysql查詢一個欄位的值在哪個表

如下 select table schema,table name from information schema.columns where column name col1 col1為子段名版。權 mysql檢視欄位在哪個表中 檢視欄位在哪個資料庫的哪張表中 use information sc...

oracle儲存過程as和is區別

第一個問題 is和as是可以互用的,用哪個都沒關係的第二個問題 在外專面 第三個問題 過程屬中沒有declare關鍵字,declare用在語句塊中 第四個問題 估計你看到的是做遊標定義的東東,抑或者直接就一句sql。沒區別,我更喜歡用as,因為用鍵盤比較方便 oracle儲存過程中is和as的區別?...