動態查詢語句---存儲過程中的異常處理
阿新 • • 發佈:2018-03-24
post 處理 into cti 可見 復雜 一個 color exec
動態查詢語句
語法 |
PREPARE |
例子 SET @skip;SET @number=5; PREPARE LIMIT FROM "SELECT * FROM tb1 LIMIT ?,?"; EXECUTE STMT SUING @skip,@number;
|
註意點 |
1.如果新的 PREPARE 語句使用了一個已存在的 stmt_name ,那麽原有的將被立即釋放! 即使這個新的 PREPARE 語句因為錯誤而不能被正確執行。 2. 即使 preparable_stmt 語句中的 ? 所代表的是一個字符串,你也不需要將 ? 用引號包含起來 3. stmt_name 是不區分大小寫的 4. 如果在終止客戶端連接會話時,沒有顯式地調用 DEALLOCATE PREPARE 句法釋放資源,服務器端會自己動釋放它。 5. PREPARE stmt_name 的作用域是當前客戶端連接會話可見 |
存儲過程中的異常處理
declare action handler for condition_value statement; |
action 可以是以下兩種: CONTINUE:繼續執行當前代碼塊 EXIT:退出當前代碼塊 |
condition_value 是一類特定的條件,可以使一下幾種: 一個MYSQL錯誤代碼 一個標準的SQLSTATE值,如SQLWARNING,NOTFOUND ,SQLEXCEPTION等 |
statement 是一個語句塊,從BEGIN開始,到END結束。它可以是一個簡單的sql語句,也可以是很復雜的邏輯語句。 |
例子 DECLARE EXIT HANDLER FOR SQLEXCEPION BEGIN ROLLBACK; SELECT ‘發生錯誤,執行回滾,程序將終止執行‘; END; 對於遊標的或者select into 操作,出現找不到的情況 DECLARE CONTINUE HANDLER FOR NOT FOUND SET found_row = 1;
|
動態查詢語句---存儲過程中的異常處理