条件异常处理和变量
1.變量的定義
DECLARE var_name[,...] type [DEFAULT value]
2.變量的賦值
SET var_name = expr [, var_name = expr] ...
SELECT col_name[,...] INTO var_name[,...] table_expr
#這里payment.amount 改為 amount應該也沒問題吧?
SELECT IFNULL(SUM(payment.amount),0) INTO v_payments
FROM payment
WHERE payment.payment_date <= p_effective_date
AND payment.customer_id = p_customer_id;
?
異常處理:
mysql> call actor_insert();
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
?
A numeric error code (1146). This number is MySQL-specific and is not portable to other database systems.
A five-character SQLSTATE value ('23000'). The values are taken from ANSI SQL and ODBC and are more standardized.
?
?DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement
handler_type 現(xiàn)在還只支持 CONTINUE 和 EXIT 兩種,CONTINUE 表示繼續(xù)執(zhí)行下面的語句,
EXIT 則表示執(zhí)行終止,UNDO 現(xiàn)在還不支持。
?
--標準錯誤碼捕獲
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
--捕獲 mysql-error-code:
DECLARE CONTINUE HANDLER FOR 1062 SET @x2 = 1;
--事先定義 condition_name:
DECLARE DuplicateKey CONDITION FOR SQLSTATE '23000'; ?#declare condition
DECLARE CONTINUE HANDLER FOR DuplicateKey SET @x2 = 1; #declare handler
--捕獲 SQLEXCEPTION
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @x2 = 1;
?
·SQLWARNING 是對所有以 01 開頭的 SQLSTATE 代碼的速記。
·NOT FOUND 是對所有以 02 開頭的 SQLSTATE 代碼的速記。
·SQLEXCEPTION 是對所有沒有被 SQLWARNING 或 NOT FOUND 捕獲的 SQLSTATE 代碼的速記
轉載于:https://www.cnblogs.com/askme/p/6364433.html
總結
                            
                        - 上一篇: 026-微软Ajax异步组件
 - 下一篇: FFmpegh.264解码