2012-02-28 57 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