ingM
2024 年7 月 3 日 15:13
#1
目前ODC界面上的存储过程修改功能不能够直接使用,不清楚为什么不开发使用(企业版)。
按照mysql的语法:
drop procedure if exists ceshi_year;
DELIMITER $$
create procedure ceshi_year
(IN tj_year
int(45)) begin
declare p_year int default 2024;
IF tj_year != 2024 THEN
set p_year = tj_year;
END IF;
select p_year;
end$$
DELIMITER ;
这样既可完成存储过程的先删除后创建,若是不能够修改,希望能增加重建功能,这样就不需要每次改动都讲存储过程复制到新的窗口,倍添时间,望能采纳。
淇铭
2024 年7 月 3 日 15:54
#3
这个需求已经在排期了 耐心等待 到时候发版了 会有说明
1 个赞
ingM
2024 年7 月 3 日 16:54
#4
想请问一下,关于Mysql在ODC上的调试是否有相应的需求排期?
淇铭
2024 年7 月 3 日 18:11
#5
你的意思是就像 navicat调试mysql的存储过程那样么?
ingM
2024 年7 月 4 日 11:47
#6
navicat没试过,应该是像Sqlserver Management那样做调试。
目前mysql模式是还不支持在存储过程以外定义变量运行,这样也导致了在在存储过程需要调试的时候都要拉出来,然后将变量全局替换掉再运行查看结果。(Oracle模式下支持的匿名块功能)
目前系统上是有300+的存储过程在运行,所以对存储过程使用体验这块比较关注。
淇铭
2024 年7 月 4 日 13:34
#7
这个估计不行 obmysql内核本身不支持像oracle那样 调试存储过程的 其实mysql也是不支持的
ingM
2024 年7 月 4 日 13:44
#8
能不能调试问题不大,如果能做到在存储过程外定义变量执行对问题的查找就有很大的帮助。
ingM
2024 年7 月 4 日 14:01
#10
直接按脚本(框选)执行下列全部代码:
declare p_year int default 2024;
IF tj_year != 2024 THEN
set p_year = tj_year;
END IF;
select p_year;
因为开发的存储过程有可能是几千行的代码,目前两种做法就是:
全局替换将变量名替换为对应的数值
重新创建存储过程,再执行存储过程
乐别
2024 年7 月 4 日 14:45
#11
是不是可以用自定义变量来达到你想要的效果,比如:
CREATE PROCEDURE debug_example_procedure()
BEGIN
DECLARE v_debug INT DEFAULT 0;
SELECT @count INTO v_debug;
IF v_debug = 1 THEN
-- 执行一些调试动作,例如输出变量值等
SELECT 'Debugging info: count value is 1';
END IF;
-- 存储过程的其他逻辑
END;
SET @count = 0;
CALL debug_example_procedure();
这样只需要在第一次替换一次,将 PL 中的原始变量替换为 @count ,调试的时候,只需要改 SET @count=xxx 一处地方,不需要全量改 PL,也不需要重建 PL。
1 个赞