如何在Jmeter中使用jdbc连接设置serveroutput

时间:2015-05-22 08:52:35

标签: oracle jdbc plsql jmeter

我正在尝试使用JDBC请求执行一个PL / SQL代码块,如下所示

set serveroutput on; 
declare
..
BEGIN
DBMS_OUTPUT.ENABLE();
..
..
DBMS_OUTPUT.PUT_LINE(X);
END;

但我在响应中收到ORA-00922: missing or invalid option错误。如果我删除set serveroutput on,则SQL块正在成功执行。但我没有在响应中获得任何值。

我试图在SQL Developer中运行完全相同的SQL块,它确实显示了预期的值。

如何运行此代码块并获取要在JMeter中填充的值?

2 个答案:

答案 0 :(得分:1)

set serveroutput on SQLPlus特定命令。执行PL / SQL块后,必须调用DBMS_OUTOUT.GET_LINES

答案 1 :(得分:0)

调整an old answer,您可以创建一个函数,让您将dbms_output缓冲区作为结果集 - 这可能更容易从JMeter处理:

create or replace function get_lines
return sys.odcivarchar2list pipelined is
  lines dbms_output.chararr;
  numlines integer;
begin
  numlines := 999;
  dbms_output.get_lines(lines, numlines);
  if numlines > 0 then
    for i in 1..numlines loop
      pipe row (lines(i));
    end loop;
  end if;
end;
/

执行您的阻止后,您可以查询:

select * from table(get_lines);

您可以详细了解dbms_output.get_lines的工作原理in the documentation。您可以直接从Jmeter调用它,如@ ibre5041建议的那样。或者可能有更好的替代方法来使用dbms_output。