JDBC連接,我試圖執行使用JDBC請求的PL/SQL代碼塊如下如何設置SERVEROUTPUT上使用的JMeter
但我得到的錯誤作爲響應ORA-00922: missing or invalid option
。如果我刪除set serveroutput on
,則SQL塊正在成功執行。但我在迴應中沒有獲得任何價值。
我試着在SQL Developer中運行完全相同的SQL塊,它向我展示了預期的值。
如何運行此代碼塊並獲取要在JMeter中填充的值?
JDBC連接,我試圖執行使用JDBC請求的PL/SQL代碼塊如下如何設置SERVEROUTPUT上使用的JMeter
但我得到的錯誤作爲響應ORA-00922: missing or invalid option
。如果我刪除set serveroutput on
,則SQL塊正在成功執行。但我在迴應中沒有獲得任何價值。
我試着在SQL Developer中運行完全相同的SQL塊,它向我展示了預期的值。
如何運行此代碼塊並獲取要在JMeter中填充的值?
set serveroutput on
SQLPlus特定命令。 PL/SQL塊執行後必須調用DBMS_OUTOUT.GET_LINES。
調整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);
你更多的CanRead如何dbms_output.get_lines
工作in the documentation。您可以直接從Jmeter調用它,如@ ibre5041建議的那樣。或者根本就可以有更好的選擇來使用dbms_output。
我現在試過了。聲明的變量z(varchar2)和n(整數)。並添加了行'DBMS_OUTPUT.GET_LINE(z,n);'。我現在如何從z獲得價值?我是否需要再次使用put_line? – Maniram
你必須調用這樣的匿名塊'begin DBMS_OUTPUT.GET_LINE(:z,:n); end;'從JDBC開始,然後使用System.out.println()顯示從DBMS_OUTPUT返回的行。或者,如果您在通過JDBC獲取字符串數組時遇到問題,則可以在循環中使用'GET_LINE'函數。這就是SQLDeveloper(和其他工具)的內部特性。 – ibre5041