溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中創建存儲過程出現報錯如何解決

發布時間:2021-07-28 17:01:17 來源:億速云 閱讀:232 作者:Leah 欄目:MySQL數據庫

這期內容當中小編將會給大家帶來有關MySQL中創建存儲過程出現報錯如何解決,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

mysql> delimiter $$
mysql> CREATE FUNCTION check_rollbackPatch(THE_REFERNCE_LABEL VARCHAR(75), THE_COLUMN_NAME VARCHAR(75), THE_INSTALL_VERSION VARCHAR(75), THE_VERSION_LEVEL_TABLE_NAME VARCHAR(75))
    ->     RETURNS INTEGER DETERMINISTIC
    ->     BEGIN
    ->         DECLARE INSTALL_VERSION VARCHAR(80) DEFAULT NULL;
    ->         DECLARE REFERENCE_LABEL VARCHAR(80) DEFAULT NULL;
    ->         DECLARE THE_QUERY VARCHAR(500) DEFAULT NULL;
    ->         DECLARE too_many_rows CONDITION FOR 1172;
    ->         DECLARE CONTINUE HANDLER FOR too_many_rows
    ->         BEGIN
    ->         SELECT concat('[INFO]    Several ', THE_REFERNCE_LABEL, ' references found.');
    ->         RETURN 0;
    ->         END;
    ->         DECLARE CONTINUE HANDLER FOR NOT FOUND
    ->         BEGIN
    ->         /*SELECT concat('[INFO]    ', THE_REFERNCE_LABEL, ' reference not found.');*/
    ->         RETURN 1;
    ->         END;        
    ->         SELECT concat('', THE_COLUMN_NAME, ', C_INSTALL_VERSION') INTO @V_PART1;
    ->         SELECT concat(THE_COLUMN_NAME, '=''', THE_REFERNCE_LABEL, ''' and C_INSTALL_VERSION=''', THE_INSTALL_VERSION, '''') INTO @V_PART2;
    ->         SELECT format_selectQuery(THE_VERSION_LEVEL_TABLE_NAME, @V_PART1, @V_PART2) INTO THE_QUERY;
    ->         /*SELECT concat('[INFO]    The query to execute is [', THE_QUERY, ']');*/
    ->         /*EXECUTE IMMEDIATE THE_QUERY into REFERENCE_LABEL, INSTALL_VERSION;*/
    ->         /*SELECT concat('[INFO]    ', THE_REFERNCE_LABEL, ' reference found');*/
    ->         RETURN 0;
    ->     END $$
ERROR 1415 (0A000): Not allowed to return a result set from a function
mysql> delimiter ;

報錯原因:
在MySQL的function里,不能使用SELECT語句來返回結果集,會報錯。

注釋掉后,報錯消失
mysql> delimiter $$
mysql> CREATE FUNCTION check_rollbackPatch(THE_REFERNCE_LABEL VARCHAR(75), THE_COLUMN_NAME VARCHAR(75), THE_INSTALL_VERSION VARCHAR(75), THE_VERSION_LEVEL_TABLE_NAME VARCHAR(75))
    ->     RETURNS INTEGER DETERMINISTIC
    ->     BEGIN
    ->         DECLARE INSTALL_VERSION VARCHAR(80) DEFAULT NULL;
    ->         DECLARE REFERENCE_LABEL VARCHAR(80) DEFAULT NULL;
    ->         DECLARE THE_QUERY VARCHAR(500) DEFAULT NULL;
    ->         DECLARE too_many_rows CONDITION FOR 1172;
    ->         DECLARE CONTINUE HANDLER FOR too_many_rows
    ->         BEGIN
    ->         /*SELECT concat('[INFO]    Several ', THE_REFERNCE_LABEL, ' references found.');*/
    ->         RETURN 0;
    ->         END;
    ->         DECLARE CONTINUE HANDLER FOR NOT FOUND
    ->         BEGIN
    ->         /*SELECT concat('[INFO]    ', THE_REFERNCE_LABEL, ' reference not found.');*/
    ->         RETURN 1;
    ->         END;        
    ->         SELECT concat('', THE_COLUMN_NAME, ', C_INSTALL_VERSION') INTO @V_PART1;
    ->         SELECT concat(THE_COLUMN_NAME, '=''', THE_REFERNCE_LABEL, ''' and C_INSTALL_VERSION=''', THE_INSTALL_VERSION, '''') INTO @V_PART2;
    ->         SELECT format_selectQuery(THE_VERSION_LEVEL_TABLE_NAME, @V_PART1, @V_PART2) INTO THE_QUERY;
    ->         /*SELECT concat('[INFO]    The query to execute is [', THE_QUERY, ']');*/
    ->         /*EXECUTE IMMEDIATE THE_QUERY into REFERENCE_LABEL, INSTALL_VERSION;*/
    ->         /*SELECT concat('[INFO]    ', THE_REFERNCE_LABEL, ' reference found');*/
    ->         RETURN 0;
    ->     END $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

上述就是小編為大家分享的MySQL中創建存儲過程出現報錯如何解決了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女