ストアドプロシージャとは何ですか?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 ;
-
ストアドプロシージャで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
-
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 //