MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

パラメータを使用してMySQLでプロシージャを作成しますか?


INとOUTを使用してパラメータを作成できます。 INは入力パラメータを取得するために使用され、OUTは出力に使用できます。

構文は次のとおりです

DELIMITER //
CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT
   yourParameterName dataType
)
BEGIN
yourStatement1;
yourStatement2;
.
.
N
END;
//
DELIMITER ;

まず、テーブルを作成します。テーブルを作成するためのクエリは次のとおりです

mysql> create table SumOfAll
   -> (
   -> Amount int
   -> );
Query OK, 0 rows affected (0.78 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです

mysql> insert into SumOfAll values(100);
Query OK, 1 row affected (0.18 sec)

mysql> insert into SumOfAll values(330);
Query OK, 1 row affected (0.24 sec)

mysql> insert into SumOfAll values(450);
Query OK, 1 row affected (0.10 sec)

mysql> insert into SumOfAll values(400);
Query OK, 1 row affected (0.20 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです

mysql> select *from SumOfAll;

以下は出力です

+--------+
| Amount |
+--------+
| 100    |
| 330    |
| 450    |
| 400    |
+--------+
4 rows in set (0.00 sec)

次に、値がテーブルに存在するかどうかを確認するストアドプロシージャを作成します。指定された値がテーブルに存在しない場合は、NULL値を取得します。

ストアドプロシージャは次のとおりです

mysql> DELIMITER //
mysql> create procedure sp_ChechValue(IN value1 int,OUT value2 int)
   -> begin
   -> set value2=(select Amount from SumOfAll where Amount=value1);
   -> end;
   -> //
Query OK, 0 rows affected (0.20 sec)
mysql> delimiter ;

ある値を使用してストアドプロシージャを呼び出し、出力をセッション変数に格納してみましょう。

ケース1:値がテーブルに存在しない場合。

mysql> call sp_ChechValue(300,@isPresent);
Query OK, 0 rows affected (0.00 sec)

次に、selectステートメントを使用して変数@isPresentの値を確認します。クエリは次のとおりです

mysql> select @isPresent;

以下は出力です

+------------+
| @isPresent |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

ケース2:値が存在する場合。

クエリは次のとおりです。ストアドプロシージャを呼び出しましょう

mysql> call sp_ChechValue(330,@isPresent);
Query OK, 0 rows affected (0.00 sec)

セッション変数@isPresentの値を確認してください。クエリは次のとおりです

mysql> select @isPresent;

以下は出力です

+------------+
| @isPresent |
+------------+
| 330        |
+------------+
1 row in set (0.00 sec)

  1. MySQLでSelectクエリを使用して挿入

    SELECTクエリを使用した挿入の場合、構文は次のとおりです- insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;を選択します。 まずテーブルを作成しましょう- mysql> create table DemoTable1603    -> (    -> StudentId int,    -> Stud

  2. MySQLで手動のAUTO_INCREMENT開始値を使用してテーブルクエリを作成しますか?

    まずテーブルを作成しましょう- mysql> create table DemoTable1907    (    UserId int NOT NULL AUTO_INCREMENT,    UserName varchar(20),    UserAge int,    UserCountryName varchar(20),    PRIMARY KEY(UserId)    )ENGINE=MyISAM,AUTO_INCREMENT=100;