2015-05-22 26 views
1

JDBC連接,我試圖執行使用JDBC請求的PL/SQL代碼塊如下如何設置SERVEROUTPUT上使用的JMeter

​​

但我得到的錯誤作爲響應ORA-00922: missing or invalid option。如果我刪除set serveroutput on,則SQL塊正在成功執行。但我在迴應中沒有獲得任何價值。

我試着在SQL Developer中運行完全相同的SQL塊,它向我展示了預期的值。

如何運行此代碼塊並獲取要在JMeter中填充的值?

回答

1

set serveroutput on SQLPlus特定命令。 PL/SQL塊執行後必須調用DBMS_OUTOUT.GET_LINES

+0

我現在試過了。聲明的變量z(varchar2)和n(整數)。並添加了行'DBMS_OUTPUT.GET_LINE(z,n);'。我現在如何從z獲得價值?我是否需要再次使用put_line? – Maniram

+0

你必須調用這樣的匿名塊'begin DBMS_OUTPUT.GET_LINE(:z,:n); end;'從JDBC開始,然後使用System.out.println()顯示從DBMS_OUTPUT返回的行。或者,如果您在通過JDBC獲取字符串數組時遇到問題,則可以在循環中使用'GET_LINE'函數。這就是SQLDeveloper(和其他工具)的內部特性。 – ibre5041

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); 

你更多的CanRead如何dbms_output.get_lines工作in the documentation。您可以直接從Jmeter調用它,如@ ibre5041建議的那樣。或者根本就可以有更好的選擇來使用dbms_output。