我正在尝试使用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中填充的值?
答案 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。