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

ストアドプロシージャとは何ですか?MySQLストアドプロシージャを作成するにはどうすればよいですか?


ストアドプロシージャは、通常のコンピューティング言語のコンテキストでは、データベースに格納されているサブプログラムのようなサブルーチンとして定義できます。 MySQLのコンテキストでは、データベースカタログ内に格納されている宣言型SQLステートメントのセグメントです。 MySQL 5ではストアドプロシージャが導入されているため、MySQLでストアドプロシージャを作成する前に、バージョンを確認する必要があります。ストアドプロシージャを作成するための構文は次のとおりです-

構文
CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter: [ IN | OUT | INOUT ] param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement

以下は、次のデータを持つテーブル「student_info」からすべてのレコードを取得するための簡単な手順を作成した例です-

mysql> select * from student_info;
+-----+---------+------------+------------+
| id  | Name    | Address    | Subject    |
+-----+---------+------------+------------+
| 100 | Aarav   | Delhi      | Computers  |
| 101 | YashPal | Amritsar   | History    |
| 105 | Gaurav  | Jaipur     | Literature |
| 110 | Rahul   | Chandigarh | History    |
+------+--------+------------+------------+
4 rows in set (0.00 sec)

これで、次のクエリを使用して、allrecords()という名前のストアドプロシージャを作成しました

mysql> Delimiter //
mysql> Create Procedure allrecords()
    -> BEGIN
    -> Select * from Student_info;
    -> END//
Query OK, 0 rows affected (0.02 sec)
mysql> DELIMITER ;

  1. ストアドプロシージャでIFを使用し、MySQLで選択する方法は?

    ストアドプロシージャでIFを使用し、selectステートメントでIF()を使用することもできます。 selectステートメントのIF() IF() in select statement mysql> select if(0=0,'Hello MySQL','condition is wrong'); これにより、次の出力が生成されます- +------------------------------------------------------+ | if('test'='test','Hello MySQL

  2. MySQL Workbenchを使用してストアドプロシージャを作成しますか?

    まず、ストアドプロシージャを作成しましょう。以下は、MySQLWorkbenchを使用してストアドプロシージャを作成するためのクエリです。 use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE="HELLO"; SELECT CONCAT(MESSAGE,' ','MYSQL!!!!'); END //