JMeter调用数据库存储过程:能否仅传入必填参数?
JMeter调用多参数存储过程的参数传递规则
核心结论:能不能只传必填参数,完全取决于你调用的存储过程本身的定义,和JMeter无关。
- 若存储过程的非必填参数已设置默认值,你只需要传入必填参数即可,非必填项可以直接省略,数据库会自动用预设的默认值填充这些参数。
- 若非必填参数没有设置默认值,那你必须为每个参数传值——哪怕是传
NULL(前提是存储过程允许该参数为NULL),否则存储过程调用会直接报错。
在JMeter的Callable Statement Sampler里的操作要点:
- 只需要在调用语句中保留必填参数的占位符
?,比如存储过程定义为CALL my_proc(?, ?, ?)(其中第2个参数有默认值),你可以直接写{call my_proc(?, ?)},然后对应设置必填的两个参数的值就行。 - 务必保证参数的顺序和存储过程定义的顺序一致,别因为省略参数搞混了位置。
- 不确定参数是否有默认值的话,直接查数据库里的存储过程定义语句:
- MySQL:执行
SHOW CREATE PROCEDURE 存储过程名 - Oracle:执行
SELECT text FROM user_source WHERE name = '存储过程名'
- MySQL:执行
内容的提问来源于stack exchange,提问作者yndingo
相关产品推荐
相关产品推荐

