如何为PostgreSQL存储过程添加参数以动态指定内部存储过程的调用次数
如何为PostgreSQL存储过程添加参数以动态指定内部存储过程的调用次数
当然可以实现动态控制调用次数的需求!只需要给你的chk()存储过程添加一个输入参数,用来接收你想要的循环次数就行。我给你调整后的完整代码,还有详细的说明:
修改后的存储过程代码
CREATE OR REPLACE PROCEDURE chk(p_loop_count INT) LANGUAGE plpgsql AS $BODY$ BEGIN -- 可选:添加参数合法性校验,避免传入非正整数导致无意义的执行 IF p_loop_count < 1 THEN RAISE EXCEPTION '循环次数必须是大于0的整数!传入的值是: %', p_loop_count; END IF; FOR i IN 1 .. p_loop_count LOOP CALL InsrtMockdata(); END LOOP; END; $BODY$;
关键改动说明
- 给存储过程定义时加上了
p_loop_count INT参数,这是一个整数类型的输入参数,用来指定你想要调用InsrtMockdata()的次数 - 把原代码里固定的
1 .. 2替换成了1 .. p_loop_count,这样循环次数就由传入的参数决定了 - 额外加了参数校验的逻辑:如果传入的次数小于1,就抛出异常提示,避免传入0、负数这类无效值导致循环不执行或者出现意外情况
调用示例
现在你可以根据需要传入不同的数字来动态控制次数了:
-- 调用3次InsrtMockdata() CALL chk(3); -- 调用10次InsrtMockdata() CALL chk(10);
这样每次调用的时候,只要传你需要的次数就行,完全不用修改存储过程的代码,非常灵活!
备注:内容来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

