ストアド プロシージャを削除する
ストアド プロシージャが作成されると、削除されるまで使用できるようにサーバー上に保存されます。 delete コマンド (第 21 章で紹介したステートメントと同様) は、サーバーからストアド プロシージャを削除します。 新しく作成されたストアド プロシージャを削除するには、次のステートメントを使用できます:
入力:
drop procedure productpricing;
分析: このステートメントは、新しく作成されたストアド プロシージャを削除します。次の () は使用されず、ストアド プロシージャ名のみが指定されることに注意してください。
DROP ONLY IF EXISTS DROP PROCEDURE は、指定されたプロシージャが存在しない場合にエラーを生成します。プロシージャが存在し、それを削除したい場合は、DROP PROCEDURE IF EXISTS を使用します (プロシージャが存在しない場合はエラーは生成されません)。
パラメータの使用
productpricing は、単に SELECT ステートメントの結果を表示する単純なストアド プロシージャです。通常、ストアド プロシージャは結果を表示しませんが、指定した変数に結果を返します。
変数 データを一時的に保存するために使用されるメモリ内の特定の場所。以下は、productpricing の修正バージョンです (最初にこのストアド プロシージャを削除しないと、再度作成することはできません):
入力:
create procedure productpricing( out pl decimal(8,2), out ph decimal(8,2), out pa decimal(8,2) ) begin select min(prod_price) into pl from products; select max(prod_price) into ph from products; select avg(prod_price) into pa from products; end;
分析: このストアド プロシージャは 3 つのパラメータを受け入れます: pl は製品の最低価格を格納し、ph は製品の最低価格を格納します製品の最高価格、pa には製品の平均価格が格納されます。各引数は指定された型を持つ必要があります。ここでは 10 進数値が使用されます。キーワード OUT は、ストアド プロシージャから値を渡す (呼び出し元に返される) ために、対応するパラメーターが使用されることを示します。 MySQL は、IN (ストアド プロシージャに渡される)、OUT (ここで使用されているようにストアド プロシージャから渡される)、および INOUT (ストアド プロシージャに出入りする) タイプのパラメータをサポートします。ストアド プロシージャのコードは、BEGIN ステートメントと END ステートメント内にあります。これらは、前に見たように、値を取得し、(INTO キーワードを指定して) 適切な変数に保存する一連の SELECT ステートメントです。
パラメータのデータ型 ストアド プロシージャのパラメータに許可されるデータ型は、テーブルで使用されるデータ型と同じです。付録 D にこれらのタイプをリストします。
レコードセットは許可されたタイプではないため、1 つのパラメーターを介して複数の行と列を返すことはできないことに注意してください。前の例で 3 つのパラメーター (および 3 つの SELECT ステートメント) を使用しているのはこのためです。この変更されたストアド プロシージャを呼び出すには、次のように 3 つの変数名を指定する必要があります:
入力:
call productpricing(@price low, @pricehigh, @priceaverage);
分析: このストアド プロシージャには 3 つのパラメータが必要であるため、正確に 3 つのパラメータを渡す必要があります。したがって、この CALL ステートメントには 3 つのパラメータが与えられます。これらは、ストアド プロシージャが結果を保持する 3 つの変数の名前です。
変数名 すべての MySQL 変数は @ で始まる必要があります。
このステートメントを呼び出すと、データは表示されません。後で表示できる (または他の処理で使用できる) 変数を返します。 取得した製品の平均価格を表示するには、次の手順を実行できます:
入力:
select @priceaverage;
出力:
3 つの値を取得するには、次のステートメントを使用できます:
入力:
select @pricehigh,@pricrlow,@priceaverage;
出力:
ここに別の例を示します。今回は IN パラメーターと OUT パラメーターを使用します。 ordertotal は注文
番号を受け入れ、注文の合計を返します:
入力:
create procedure ordertotal( in onumber int, out ototal decimal(8,2) ) begin select sum(item_price*quantity) from orderitems where order_num = onumber into ototal; end;
分析: 注文番号がストアド プロシージャに渡されるため、onumber は IN として定義されます。合計はストアド プロシージャから返されるため、ototal は OUT として定義されます。 SELECT ステートメントはこれら 2 つのパラメーターを使用し、WHERE 句は onumber を使用して正しい行を選択し、INTO は ototal を使用して計算された合計を保存します。
この新しいストアド プロシージャを呼び出すには、次のステートメントを使用できます:
入力:
call ordertotal(20005,@total);
分析: 2 つのパラメーターを ordertotal に渡す必要があります。最初のパラメーターは注文番号で、2 番目のパラメーターには計算された合計変数が含まれます。名前。 この合計を表示するには、次の手順を実行します:
入力:
select @total;
出力:
分析: @total は ordertotal の CALL ステートメントによって入力され、SELECT はそれに含まれる値を表示します。 別の注文の合計表示を取得するには、ストアド プロシージャを再度呼び出して、変数を再表示する必要があります:
Input:
call ordertotal(20009,@total); select @total;
以上がMySQLストアドプロシージャの削除操作の詳細説明とパラメータの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。