【问题标题】:Fetch Oracle output of dbms_output.put_line with QtSql使用 QtSql 获取 dbms_output.put_line 的 Oracle 输出
【发布时间】:2012-02-28 15:38:31
【问题描述】:

是否可以在 QSqlQuery 中获取 Oracle DB 的原始 DB 输出,例如通过这样的方式:

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

现在我想访问输出(本例中为“hello world”)。

【问题讨论】:

    标签: oracle qt4 qtsql


    【解决方案1】:

    假设您已经通过之前调用DBMS_OUTPUT.ENABLE 配置了DBMS_OUTPUT 写入的缓冲区,您应该能够使用DBMS_OUTPUT.GET_LINEGET_LINES 过程从缓冲区中获取数据。

    我不是 QT 库方面的专家,但这里有一个 Qt 中的 calling a stored procedure that returns a collection 示例,您似乎需要这样做才能调用 GET_LINES 过程。

    【讨论】:

    • 当我将 QVariant 绑定到 GET_LINES 的第一个参数时,SQL 查询失败并显示 GET_LINES 的参数数量不正确的错误消息。有什么想法吗?
    • @fawick - GET_LINES 采用两个参数。第一个是用于获取数据的数组。第二个是一个数字,表示您要获取多少行。我猜你没有传入第二个参数?
    • 不,没关系,实际上并没有绑定我的 QVariant 的是 QSqlQuery::bindValue...
    • 好的,我决定使用不同的方法并为此放弃 Qt。看起来 QtSql 目前还不够强大,无法直接获取 SQL 输出。我开始使用 Python 和 cx_oracle 并在那里使用“DBMS_OUTPUT.GET_LINES”就像魅力一样,所以这个答案真的帮助了我!
    猜你喜欢
    • 1970-01-01
    • 2019-06-20
    • 2012-03-18
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多