手順:ので、これらのパッケージの実行と呼ばれる、複数の文をカプセル化します
機能:戻り値は、「プロセス」です
プロセスは、関数の戻り値ではありません
私たちは、SQLパッケージの一緒にいくつかの部分を入れて、名前---プロセス
このプロセスは、データベースのストアドプロシージャに格納されています------
ストアドプロシージャの量は、構文を作成します。
手続きPROCEDURENAMEを作成します()
ベギン
----- SQL文。
エンド$
私たちは、単純なストアドプロシージャを作成しました:
作成 手順の)(P1を 始める 選択 2 + 3 エンド $を
ストアドプロシージャを呼び出します。
コールP1()$
ストアドプロシージャを使用すると、複雑な機能を実行するために、変数、式、制御構造を使用することができることを意味し、プログラム可能であり、
ストアドプロシージャでは、宣言で変数を宣言するための
フォーマット:変数名を宣言する変数の型[既定の既定値]
作成 手順P2() 開始 DECLAREの年齢のint型の デフォルトの 18をある; DECLARE高さint型の デフォルト 180 [ ; SELECT CONCAT(' 年齢'、年齢を、' 高さがある' 、高さ); エンド $
私たちは、P2を表示するには、このストアドプロシージャを呼び出します。
保管時には、SQL文の変数のような合法的な操作、可能+ - * /
操作の結果が変数に割り当てられていることに注意してください:
=式:変数名を設定します
作成 手順P3は、() 開始 DECLAREの年齢のint型の デフォルト 18をされ、 SET年齢:=年齢+ 20です。 SELECT CONCATを(' 20歳です' 、年齢); エンド $
/ else制御の場合:
作成 手順P4() 開始 DECLAREの年齢のint型の デフォルト値 18は、 IF年齢が> = 18で 、その後 SELECT ' 古い' ; 他 SELECT ' マイナー' ; エンド IFは、 エンド $
私たちは、ストアドプロシージャのパラメータが渡されていない、我々はストアドプロシージャを作成するためのパラメータを渡すことができます見ることができます:
パラメータの受け渡し構文パラメータ名パラメータタイプ[/アウト/ INOUT中]
create procedure p5(width int, height int) begin select concat('你的面积是',width*height)as area; if width>height then select '你挺胖'; elseif width<height then select '你挺瘦'; else select '你挺方'; end if; end$
我们给里面传入参数(3,4):
我们都知道控制结构有三大类:顺序,选择和循环
我们现在来写一个带有循环控制结构的存储过程:
create procedure p6() begin declare total int default 0; declare num int default 0; while num<100 do set num:=num+1; set total:=total+num; end while; select total; end$
上面的是我们输出1到100的和,接下来我们在p6的基础上稍作改进写一个p7:输入一个参数N,得到1到N的和:
create procedure p7(in N int) begin declare total int default 0; declare num int default 0; while num<N do set num:=num+1; set total:=total+num; end while; select total; end$
in 表示我们是输入参数
我们接下来看输出参数:
create procedure p8(in n int,out total int) begin declare num int default 0; set total:=0; while num<n do set num:=num+1; set total:=total+num; end while; end$
其实out就是往外面输出参数,我们给个变量来接受它。
我们在看一下inout型参数:
create procedure p9(inout age int) begin set age:=age+20; end$
在这里我们要先声明一个变量,然后调用存储过程,然后再输出它