Oracle 如何在Jmeter中使用jdbc连接设置serveroutput
我尝试使用JDBC请求执行PL/SQL代码块,如下所示Oracle 如何在Jmeter中使用jdbc连接设置serveroutput,oracle,jdbc,plsql,jmeter,Oracle,Jdbc,Plsql,Jmeter,我尝试使用JDBC请求执行PL/SQL代码块,如下所示 set serveroutput on; declare .. BEGIN DBMS_OUTPUT.ENABLE(); .. .. DBMS_OUTPUT.PUT_LINE(X); END; 但是我在响应中得到错误,如ORA-00922:缺少或无效选项。如果我删除上的设置serveroutput,则SQL块将成功执行。但我没有得到任何价值的回应 我尝试在SQLDeveloper中运行完全相同的SQL块,它确实显示了预期的值 如何运行此代
set serveroutput on;
declare
..
BEGIN
DBMS_OUTPUT.ENABLE();
..
..
DBMS_OUTPUT.PUT_LINE(X);
END;
但是我在响应中得到错误,如ORA-00922:缺少或无效选项。如果我删除
上的设置serveroutput,则SQL块将成功执行。但我没有得到任何价值的回应
我尝试在SQLDeveloper中运行完全相同的SQL块,它确实显示了预期的值
如何运行此代码块并获取要在JMeter中填充的值?在
SQLPlus特定命令上设置serveroutput。您必须在PL/SQL块执行后调用。调整后,您可以创建一个函数,让您获得dbms_输出缓冲区作为结果集-这可能更容易从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\u输出。获取行的工作原理的信息。正如@ibre5041所建议的,您可以直接从Jmeter调用它。或者,除了使用dbms_输出,可能还有更好的选择。我现在也尝试了同样的方法。声明的变量z(varchar2)和n(整数)。并添加了行DBMS_输出。获取_行(z,n)代码>。现在如何从z中获取值?我需要再次使用put_行吗?您必须调用这样的匿名块begindbms_OUTPUT.GET_行(:z,:n);结束然后使用System.out.println()显示从DBMS\u输出返回的行。或者,如果您在通过JDBC获取字符串数组时遇到问题,可以在循环中使用GET_LINE
函数。这就是SQLDeveloper(和其他工具)在内部所做的。