mysql儲存過程的問題,mysql中的儲存過程是什麼意思啊

2022-12-29 21:56:21 字數 3689 閱讀 3837

1樓:匿名使用者

為什麼要執行 select id,name from x?

這是結果語句,不是過程語句.

mysql中的儲存過程是什麼意思啊

2樓:葉天凌

直白的講就是把sql語句進行封裝,然後留個介面,使用的時候直接呼叫介面。

3樓:華子張凱華

可以把對資料的各種處理寫在儲存過程裡 程式只需呼叫 或者 傳參就可以了 方便後期維護 執行速度也比程式裡要好 這是個人理解

4樓:匿名使用者

儲存過程(stored procedure)是一組為了完成特定功能的sql語句集

功能是將常用或複雜的工作,預先用sql語句寫好並用一個指定名稱儲存起來, 以後需要資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 call 儲存過程名字, 即可自動完成命令。

儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化後儲存在資料庫伺服器中,可由應用程式通過一個呼叫來執行,而且允許使用者宣告變數 。

同時,儲存過程可以接收和輸出引數、返回執行儲存過程的狀態值,也可以巢狀呼叫。

mysql 儲存過程 25

5樓:雲南新華電腦學校

.      關於mysql的儲存過程

儲存過程是資料庫儲存的一個重要的功能,但是mysql在5.0以前並不支援儲存過程,這使得mysql在應用上大打折扣。好在mysql 5.

0終於開始已經支援儲存過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。

mysql儲存過程的建立

(1). 格式

mysql儲存過程建立的格式:create procedure 過程名 ([過程引數[,...]])

[特性 ...] 過程體

這裡先舉個例子:

mysql> delimiter //

mysql> create procedure proc1(out s int)

-> begin

-> select count(*) into s from user;

-> end

mysql> delimiter ;

注:(1)這裡需要注意的是delimiter //和delimiter ;兩句,delimiter是分割符的意思,因為mysql預設以";"為分隔符,如果我們沒有宣告分割符,那麼編譯器會把儲存過程當成sql語句進行處理,則儲存過程的編譯過程會報錯,所以要事先用delimiter關鍵字申明當前段分隔符,這樣mysql才會將";"當做儲存過程中的**,不會執行這些**,用完了之後要把分隔符還原。

(2)儲存過程根據需要可能會有輸入、輸出、輸入輸出引數,這裡有一個輸出引數s,型別是int型,如果有多個引數用","分割開。

(3)過程體的開始與結束使用begin與end進行標識。

6樓:匿名使用者

mysql教程4 mysql8運算子、函式、儲存過程及新增資料型別 17.之建立帶有in和out引數的儲存過程 學習猿地

求助:mysql 儲存過程有問題 20

7樓:匿名使用者

select count(*) into sumr from 表a where列a = userid;這句話有問題,怎麼破。。

把輸出的錯誤提示截圖看看

請問一個mysql儲存過程的問題,定義老是失敗,謝謝

8樓:

沒問題啊

我在實際環境測試如下:

mysql> create table tb_name(stuid int auto_increment primary key,_name varchar(20),_age int);

query ok, 0 rows affected (0.01 sec)

mysql> desc tb_name;

| field | type | null | key | default | extra |

| stuid | int(11) | no | pri | null | auto_increment |

| _name | varchar(20) | yes | | null | |

| _age | int(11) | yes | | null | |

3 rows in set (0.02 sec)

mysql> delimiter //

mysql> create procedure insert_student (_name varchar(50),_age int ,out _id int)

-> begin

-> insert into tb_name value(null,_name,_age);

-> select max(stuid) into _id from tb_name;

-> end;

-> //

query ok, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> call insert_student('aa',10,@id);

query ok, 0 rows affected (0.00 sec)

mysql> select @id;

+------+

| @id |

+------+

| 1 |

+------+

1 row in set (0.00 sec)

mysql> select * from tb_name;

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

| stuid | _name | _age |

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

| 1 | aa | 10 |

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

1 row in set (0.00 sec)

mysql>

9樓:匿名使用者

create procedure insert_student (_name varchar(50),_age int ,out _id int)

---create procedure insert_student (in _name varchar(50),in _age int ,out _id int)

----------------------------------------------

喔,是不是結束符的原因

delimiter $$

create procedure insert_student (in _name varchar(50),in _age int ,out _id int)

begin

insert into _student value(null,_name,_age);

select max(stuid) into _id from _student;

end $$

10樓:我tm不管

錯誤很簡單啊,就是你把values寫成value了

mysql怎麼執行儲存過程,mysql怎麼執行一個儲存過程

給你個例子 drop procedure if exists call proc temp delimiter 儲存過程從 開始 create procedure proc temp in startdate varchar 20 設定傳入的變數,沒有可以不要傳 in enddate varchar...

sql 儲存過程變數賦值問題,SQL 儲存過程變數賦值問題

declare user varchar 1000 declare motable varchar 20 select motable mt 10 declare sql nvarchar 4000 定義變數,注意型別 set sql select user count distinct useri...

mysql儲存過程資料庫表名欄位作為引數傳遞給儲存過程的方法

直接將資料庫表名欄位作為字元型別傳到儲存過程中,儲存過程拼接sql語句,再用exec執行。例如 create procedure proc test tablename varchar 100 with execute as caller asdeclare sql varchar 1000 set...