エラーメッセージをスローして実行を終了するMySQLハンドラーをストアドプロシージャに作成するにはどうすればよいですか?
MySQLストアドプロシージャで例外が発生した場合は常に、適切なエラーメッセージをスローして処理することが非常に重要です。例外を処理しないと、ストアドプロシージャでその特定の例外を使用してアプリケーションが失敗する可能性があるためです。 。 MySQLは、エラーメッセージをスローして実行を終了するハンドラーを提供します。これを示すために、次の例を使用して、主キー列に重複する値を挿入しようとしています。
mysql> Delimiter // mysql> Create Procedure Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20)) -> BEGIN -> DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'Got an error'; -> INSERT INTO Student_detail -> (Studentid, StudentName, Address) -> Values(S_Studentid,S_StudentName,S_Address); -> Select * from Student_detail; -> END // Query OK, 0 rows affected (0.00 sec) mysql> Delimiter ; mysql> CALL Insert_Studentdetails3(105, 'Mohan', 'Chandigarh'); +-----------+-------------+------------+ | Studentid | StudentName | address | +-----------+-------------+------------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | | 103 | Rahul | Jaipur | | 104 | Ram | Chandigarh | | 105 | Mohan | Chandigarh | +-----------+-------------+------------+ 5 rows in set (0.04 sec) Query OK, 0 rows affected (0.06 sec)
ここで、列'studentid'の重複する値を追加しようとすると、実行が終了します。プロシージャ' select * from student_detail'で記述されたクエリの結果セットは表示されず、エラーメッセージ'gotのみが表示されます。エラー'。
mysql> CALL Insert_Studentdetails3(105, 'Sohan', 'Bhopal'); +--------------+ | Got an error | +--------------+ | Got an error | +--------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
-
テーブルの値を更新するMySQLストアド関数を作成するにはどうすればよいですか?
私たちが知っているように、関数は結果を返したいときに最もよく使われます。したがって、値の挿入や更新などのテーブルを操作するためのストアド関数を作成する場合、それは多かれ少なかれストアドプロシージャのようになります。次の例では、「student_marks」という名前のテーブルの値を更新する「tbl_update」という名前のストアド関数を作成しています。 mysql> Select * from student_marks// +---------+------+---------+---------+---------+ | Name | Math | Eng
-
ストアドプロシージャで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