Mysqlあれらの事の(十三)変数、条件の使用


ストレージ・プロシージャで使用できる変数、条件
1.変数の定義
DECLAREでは変数を定義できますが、ローカルです.その作用範囲はBEGINでしかありません...ENDは有効で、ネストされたブロックで使用できます.もちろんdefaultでデフォルト値を設定できます.
DECLARE var_name [,.....] type [DEFAULT value] 

例:変数の定義
DECLARE last_day_start DATE --    DATE    ,   last_day_start

2.変数付与
直接値を割り当てることができ、値をクエリーすることができます.
--      set,           
--    
SET var_name = expr [,var_name = expr.....]

例:上記で定義した変数に値を割り当てる
SET last_day_start = DATE_SUB(CURRENT_DATE(),INTERVAL 1 MONTH) --     

クエリーによる変数の割り当て
--         
--    
SELECT col_name[,...] INTO var_name [,....] table_expr
--             

 
DECLARE v_payment DECIMAL(5,2); --      
--         
SELECT IFNULL(SUM(payment.amount),0) INTO v_payment FROM payment

 3.条件の定義
--         
DECLARE condition_name CONDITION FOR condition_value

condition_value:
           SQLSTATE [VALUE] sqlstate_value
      | mysql_error_code

 4.条件の処理
---     
DECLARE handler_type HANDLER FOR condition_value [,....] sp_statement

handler_type:
               CONTINUE | EXIT | UNDO

condition_value:
               SQLSTATE [VALUE]
           | condition_name
           | SQLWARNING
           | NOT FOUND
           | SQLEXCEPTION
           | mysql_error_code

例:
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2=1

CONTINEは、下に進むことを示します.
EXITは実行中止を示します.