有什么方法可以在存储过程中传递默认整数?

问题描述

对于我的家庭作业,存储过程应接受1到15之间的可选整数,但如果未传递任何值,则默认为3。

DELIMITER //
CREATE OR REPLACE PROCEDURE rankVideos(rank INT)
BEGIN
    if rank = null then
        SET rank = 3;
    END if;
    
 CREATE OR REPLACE TEMPORARY TABLE all_ranks AS (
 SELECT * FROM youtube.homework7a
 );

 create OR REPLACE TEMPORARY TABLE t2 AS ( SELECT
 category,row_number() OVER (ORDER BY cnt DESC) v_cnt,row_number() OVER (ORDER BY views DESC) v_views,row_number() OVER (ORDER BY likes DESC) v_likes,row_number() OVER (ORDER BY dislikes DESC) v_dislikes,row_number() OVER (ORDER BY comment_count DESC) v_comment_count FROM all_ranks
 );


 CREATE OR REPLACE TEMPORARY TABLE t3 AS (
 SELECT * FROM t2
 WHERE v_cnt <= rank OR v_views <= rank OR v_likes <= rank
 OR v_dislikes < rank OR v_comment_count <= rank
 );


 CREATE OR replace TEMPORARY TABLE t4 AS (
 SELECT category,case when v_cnt <= rank then v_cnt ELSE null END cnt,case when v_views <= rank then v_views ELSE null END views,case when v_likes <= rank then v_likes ELSE null END likes,case when v_dislikes <= rank then v_dislikes ELSE null END dislikes,case when v_comment_count <= rank then v_comment_count ELSE null END comment_count
 FROM t3
 )
;

SELECT *,ifnull(cnt,999)
 + ifnull(views,999) 
 + ifnull(likes,999) 
 + ifnull(dislikes,999) 
 +ifnull(comment_count,999) num_non_null_cols,0)
 + ifnull(views,0)
 + ifnull(likes,0)
 + ifnull(dislikes,0)
 + ifnull(comment_count,0) sum_non_null_cols
FROM t4
ORDER BY num_non_null_cols,sum_non_null_cols;


END
//
DELIMITER ;

当我运行该过程并将整数保留为空白时,我得到一个错误,它具有不正确的整数值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)