2012-02-28 60 views
1

是否可以在QSqlQuery中獲取Oracle DB的原始數據庫輸出,例如:通過這樣的事情:使用QtSql獲取dbms_output.put_line的Oracle輸出

QSqlQuery sqlQuery; 
sqlQuery.prepare("exec dmbs_output.put_line('hello world');"); 
sqlQuery.exec(); 

現在我想訪問輸出(在這個例子中'hello world')。

回答

2

假設你已經配置了緩衝區DBMS_OUTPUT通過調用DBMS_OUTPUT.ENABLE早些時候寫到,你應該能夠使用DBMS_OUTPUT.GET_LINEGET_LINES程序從緩衝區讀取數據。

我並不是QT庫的專家,但這裏有一個Qt中的calling a stored procedure that returns a collection的例子,看起來好像你需要做的是調用GET_LINES過程。

+0

當我將QVariant綁定到GET_LINES的第一個參數時,SQL查詢失敗,並顯示一條錯誤消息,指出GET_LINES的參數數量不正確。有任何想法嗎? – fawick 2012-02-28 17:00:59

+0

@fawick - 'GET_LINES'有兩個參數。第一個是將數據提取到的數組。第二個是一個數字,表示您想要獲取多少行。我猜你沒有傳入第二個參數? – 2012-02-28 17:13:55

+0

不,沒關係,它的QSqlQuery :: bindValue實際上並沒有綁定我的QVariant ... – fawick 2012-02-28 17:49:45