mysqlストレージ・プロシージャの使用上の注意点
1341 ワード
1.mysqlは、varcharタイプのようなサイズのパラメータを指定するストレージ・プロシージャ・パラメータを記述します.パラメータは、CREATE PROCEADURE name(IN params VARCHAR(255))のフォーマットです.
BEGIN
メソッド体END 2.パラメータの名前は、データベース・テーブル・フィールドの名前と同じようにしたり、テーブルに別名を付けたりしないでください.伝達されたパラメータをメソッド体に宣言して受信することが望ましい.これにより、データベースはパラメータとテーブルフィールドを混用しない.パラメータを宣言する3つの方法:
a.グローバル変数の設定
set@a='新しい変数';
b.関数と保存中に使用する変数declear
declear a int unsigned default 1;
この変数は変数タイプを設定する必要があり、beginにのみ存在します.endこの間
c . select .. into..テーブル内のコンテンツを指定した変数に直接割り当てる
select name,bid into @a,@b from bank limit 1;
変数名がフィールド名と一致しないことに注意してください.
ストレージ・プロシージャの一般的な説明:
ストレージ・プロシージャは、共通のオペレーションをカプセル化し、異なるプラットフォームで共通に使用できます.
ストレージ・プロシージャには戻り値がなく、sql文呼び出しができず、call呼び出しのみであり、結果セットを返さずに実行されます.
保存中にsql文を行う場合に使用することに注意してください.このシステムのデフォルトの終了子は別のものに再設定しなければなりません.そうしないと、書き込みプロセスの半分のシステムはプログラムが終了したと勘違いしてエラーを報告します.
変更終了コマンドは$
delimiter$+リターンまたは略記d$+リターン
すべてのストアド・プロシージャを表示
show procedure status;
指定したストアド・プロシージャの削除
drop procedureプロセス名;
例:
BEGIN
メソッド体END 2.パラメータの名前は、データベース・テーブル・フィールドの名前と同じようにしたり、テーブルに別名を付けたりしないでください.伝達されたパラメータをメソッド体に宣言して受信することが望ましい.これにより、データベースはパラメータとテーブルフィールドを混用しない.パラメータを宣言する3つの方法:
a.グローバル変数の設定
set@a='新しい変数';
b.関数と保存中に使用する変数declear
declear a int unsigned default 1;
この変数は変数タイプを設定する必要があり、beginにのみ存在します.endこの間
c . select .. into..テーブル内のコンテンツを指定した変数に直接割り当てる
select name,bid into @a,@b from bank limit 1;
変数名がフィールド名と一致しないことに注意してください.
ストレージ・プロシージャの一般的な説明:
ストレージ・プロシージャは、共通のオペレーションをカプセル化し、異なるプラットフォームで共通に使用できます.
ストレージ・プロシージャには戻り値がなく、sql文呼び出しができず、call呼び出しのみであり、結果セットを返さずに実行されます.
保存中にsql文を行う場合に使用することに注意してください.このシステムのデフォルトの終了子は別のものに再設定しなければなりません.そうしないと、書き込みプロセスの半分のシステムはプログラムが終了したと勘違いしてエラーを報告します.
変更終了コマンドは$
delimiter$+リターンまたは略記d$+リターン
すべてのストアド・プロシージャを表示
show procedure status;
指定したストアド・プロシージャの削除
drop procedureプロセス名;
例:
\d $
create procedure yanshi(in arg tinyint)
begin
declare age tinyint default 0;
set age=arg;
if age<20 then
select ' 20 ';
elseif age>20 then
select ' 20 ';
end if;
end
$
//
set @num=12$
call yanshi(@num)$
call yanshi(21)$