Mysqlデータベース格納過程の基本文法解説



drop procedure sp_name//
これに先立ち、MYSQL文法の基本的な知識について、小編は次の例を通して、基本的な文法について説明します。
普通はMYSQLで;文末は入力確認と実行を表しますが、記憶中です。終了を表すのではないので、このコマンドで番号を//に変更して入力を確認して実行します。格納プロセスはプログラム設計言語のように、データの種類、フロー制御、入出力、および独自の関数ライブラリを含んでいます。
一.保存プロセスの作成
1.基本文法:

create procedure sp_name()
begin
.........
end
2.パラメータ転送
二.保存プロセスの呼び出し
1.基本文法:

call sp_name()
注意:保存プロセス名の後ろには、パラメータが渡されていなくても、括弧を入れなければなりません。
三.保存プロセスの削除
1.基本文法:
2.注意事項
(1)他の記憶プロセスを一つの記憶過程で削除することはできません。他の記憶プロセスを起動するしかありません。
ブロック
1.ブロック定義、常用

begin
......
end;
ブロックに別名を付けることもできます。

lable:begin
...........
end lable;
leave lableが使えます。ブロックから飛び出し、ブロック以降のコードを実行します。
2.条件文
if条件then
 statement
 else
 statement
 end if;
3.循環文
(1).whileサイクル
[label:]WHILE expression DO
 
 statements
 
 END WHILE[label]
 
(2).loopサイクル
[label:]LOOP
 
 statements
 
 END LOOP[label]
(3).repeat untilサイクル
[label:]REPEAT
 
 statements
 
 UNTIL expression
 
 END REPEAT[label]
五.その他の常用命令
1.show procedure status
データベースに格納されているすべての格納プロセスの基本情報を表示します。所属データベース、格納プロセス名、作成時間などが含まれます。
2.show create procedure sp uname
保存プロセスの詳細を表示します。
次の例を見ます。
一、MySQL作成保存プロセス
pr_addは簡単なMySQL記憶プロセスであり、このMySQL記憶プロセスには2つのintタイプの入力パラメータ「a」と「b」があり、これらの2つのパラメータの和を返します。
デリミター/   -- 分割子を変更
drop procedure if exists pr uadd///  -- この保存プロセスが前に作成されたら削除します。
二つの数の和を計算します。

create procedure pr_add (a int,b int)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
select c as sum;
end
//
二、MySQLを呼び出して保存するプロセス
call pradd(10,20)
MySQL記憶プロセスを実行し、プロセスパラメータはMySQLユーザ変数です。
set@a=10
set@b=20
call pradd(@a、@b)
三、MySQL記憶プロセスの特徴
MySQLストレージプロセスを作成する簡単な文法は、次の通りです。
create procedure格納プロセス名()
(
[in|out|inout]パラメータdatatype
)
begin
MySQL文
end;
MySQL格納プロセスパラメータは、明示的に「in」、「out」、「inout」を指定しないと、デフォルトは「in」となります。習慣的には、「in」のパラメータに対しては、明示的に指定しません。
1.MySQL格納プロセス名の後ろにある「()」が必要です。パラメータがなくても「()」が必要です。
2.MySQLにプロセスパラメータを格納し、パラメータ名の前に「@」を追加することはできません。例えば、「@a」 int。次の作成格納プロセス文法はMySQLではエラーです。(SQL Serverでは正しいです。)MySQL記憶中の変数は、変数名の前に「@」を追加する必要はありません。ただし、MySQLクライアントユーザ変数は「@」を追加します。
create procedure pradd
(
@a int、--エラー
b int--正しい
)
3.MySQL格納プロセスのパラメータはデフォルト値を指定できません。
4.MySQL格納プロセスは、procedure bodyの前に「as」を追加する必要はありません。SQL Serverは、プロセスに「as」のキーワードを追加する必要があります。

create procedure pr_add
(
a int,
b int
)
as --   ,MySQL     “as”
begin
mysql statement ...;
end;
5.MySQL記憶中に複数のMySQL文が含まれている場合は、begin endキーが必要です。

create procedure pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;
6.MySQL記憶中の各語句の末尾には、セミコロン(;)を付けます。

...
declare c int;
if a is null then
set a = 0;
end if;
...
end;
7.MySQL記憶中のコメント。
declare c int;--これは単一の行MySQLの注釈です。後に少なくとも1つのスペースがあります。
if a is null then铉これもシングル行MySQLコメントです。
set a=0
end if;

end;
8.MySQL記憶中に「return」のキーワードは使用できません。
set c=a+b
select c as sum;
end;
9.MySQLストレージを呼び出すときは、プロセス名の後ろに「()」を追加する必要があります。パラメータが一つなくても「()」が必要です。
call prノの_パラム();
10.MySQL格納プロセスパラメータにはデフォルト値がないので、MySQL格納プロセスを呼び出したときは、パラメータを省略することはできません。nullで代替できます。
私たちはもう一つの例を通して、上記の知識点を深めます。
1、以下は記憶プロセスの定義プロセスである。

create procedure proc_name (in parameter integer)
begin 
declare variable varchar(20);
if parameter=1 then set variable='MySQL';
else set variable='PHP';
end
if;
insert into tb (name) values (variable);
end;
MySQLに格納されているプロセスの構築はキーワードcreate procedureで始まり、後に保存プロセスの名前とパラメータが続きます。MySQLの格納プロセス名は、大文字と小文字を区別しない。例えば、PROCE 1()とproce 1()は、同じ格納プロセス名を表す。保存プロセス名はMySQLデータベース内のビルド関数と名前を変更することができません。
記憶プロセスのパラメータは、一般的に3つの部分から構成されています。第1の部分は、in、outまたはinoutとすることができる。nは、記憶中にパラメータが入ってくることを表します。outは外部へのパラメータを表します。inoutは、定義されたパラメータが格納プロセスに入ることができ、記憶プロセスが修正されてから格納プロセスが流れることができ、記憶プロセスはデフォルトでは着信パラメータであるため、パラメータinは省略することができる。第二部分はパラメータ名です。第三の部分は、MySQLデータベースのすべての利用可能なフィールドタイプであり、複数のパラメータがある場合、パラメータ間はカンマで分割できます。
MySQL記憶プロセスのステートメントブロックはbeginで始まり、endで終了します。ステートメント体には変数の宣言、制御文、SQLクエリ文などが含まれます。格納プロセス内のステートメントはセミコロンで終了しますので、格納プロセスを定義する前にステートメントを終了します。他の文字に変更し、記憶中に出現する確率も低いはずです。キーワードでdelimiterを変更することができます。たとえば:
mysql>delimiter//
格納プロセスの作成後、以下の文で削除できます。パラメータproc_nameとは、格納プロセス名をいう。
drop procedure proc_name
実現プロセス
(1)MySQL記憶プロセスは「コマンドプロンプト」で作成されますので、まず「コマンドプロンプト」ウィンドウを開くべきです。
(2)「コマンドプロンプト」画面に入ると、まずMySQLデータベースサーバに登録し、「コマンドプロンプト」の下に次のコマンドを入力します。
mysql Cuユーザ名Cpユーザパスワード
(3)語句の終了記号を変更し、この例では語句の終端を「/」に変更します。コードは以下の通りです
デリミター/
(4)保存プロセスを作成する前に、まずデータベースを選択します。コードは以下の通りです
useデータベース名
(5)格納プロセスを作成します。
(6)call文で記憶プロセスを呼び出します。
一対三を挙げる

use test;
create table user(
id mediumint(8) unsigned not null auto_increment,
name char(15) not null default ”,
pass char(32) not null default ”,
note text not null,
primary key (id)
)engine=Innodb charset=utf8;
例1

delimiter //
create procedure proc_name (in parameter integer)
begin
if parameter=0 then
select * from user order by id asc;
else
select * from user order by id desc;
end if;
end;
//

delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);
例2

drop procedure proc_name;
delimiter //
create procedure proc_name (in parameter integer)
begin
declare variable varchar(20);
if parameter=1 then
set variable='Windows';
else
set variable='Linux';
end if;
select parameter;
end;
//

delimiter ;
show warnings;
call proc_name(1);
call proc_name(0);

   drop procedure proc_name;
注記:
1.show procedure status;
データベースに格納されているすべての格納プロセスの基本情報を表示します。所属データベース、格納プロセス名、作成時間などが含まれます。
2.show create procedure sp uname
保存プロセスの詳細を表示します。
以上がこのMYSQL基本文法に関する知識の全部です。いい感じがしたら、あなたの友達に分けてあげましょう。