Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-14132

oracle (xe) stored procedures with bind variables get errors

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 4.7.2
    • 4.7.0
    • SQL Support
    • Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    • cb2a108d79b09ec6ea91106e7f33826dceac4a42

    Description

      with Qt 4.7.0 I get errors when executing a Oracle stored procedure with bind variables. The same works fine for Qt 4.6.3.

      Involved products:
      -------------------------

      • Database server: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
      • DB-Client used for compiling Qt SQL plugin: Oracle Instant Client Release 10.2.0.3.0
      • gcc for compiling Qt 4.7.0 and application: gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3

      Situation:
      ------------
      A simple QtGui application connects via oci Sql plugin using Oracle Instant Client to an Oracle XE database server and calls a simple stored procedure with 2 bind variables. As a result the client connection aborts with "ORA-03113: end-of-file on communication channel". When using Qt 4.6.3 instead of Qt 4.7.0 in the same constellation it works fine.

      Qt Client-Code:
      ---------------------
      QSqlQuery sqlQuery;
      QString currentVersion = "Version0815";
      QString response;

      response.resize(200);

      sqlQuery.prepare("CALL k3_check_app_version(?, ?)");
      sqlQuery.addBindValue(currentVersion);
      sqlQuery.addBindValue(response, QSql::Out);

      // Also tried this alternative:
      //sqlQuery.bindValue(0, currentVersion);
      //sqlQuery.bindValue(1, response, QSql::Out);

      sqlQuery.exec();

      The called Oracle Stored-Procedure:
      --------------------------------------------------
      CREATE OR REPLACE PROCEDURE "KARO3"."K3_CHECK_APP_VERSION"
      (v_version IN varchar2,
      v_response OUT varchar2
      ) is
      begin

      declare
      v_num number;

      begin
      if v_version IN ('1.10','1.11','1.12') then
      v_response := 'SUPPORTED';
      else
      v_response := 'UNSUPPORTED';
      end if;

      exception
      when others then
      v_response := 'UNSUPPORTED';

      end;
      end;
      /

      Oracle dump on server side:
      ---------------------------------------
      ORA-07445: exception encountered: core dump [B77FD313] [SIGSEGV] [Address not mapped to object] [0x0]

      PARSING IN CURSOR #2 len=34 dep=0 uid=37 oct=170 lid=37 tim=1255632076547037 hv=1809104850 ad='3a12cbb0'
      CALL k3_check_app_version(:f, :fb)
      END OF STMT
      PARSE #2:c=0,e=2138,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1255632076547003
      BINDS #2:
      kkscoacd
      Bind#0
      oacdty=01 mxl=32(22) mxlc=00 mal=00 scl=00 pre=00
      oacflg=01 fl2=1000000 frm=02 csi=2000 siz=2032 off=0
      kxsbbbfp=b70fc7c8 bln=32 avl=22 flg=05
      value=""
      Bind#1
      oacdty=01 mxl=2000(492) mxlc=00 mal=00 scl=00 pre=00
      oacflg=03 fl2=1000000 frm=02 csi=2000 siz=0 off=32
      kxsbbbfp=b70fc7e8 bln=2000 avl=00 flg=01
      Exception signal: 11 (SIGSEGV), code: 1 (Address not mapped to object), addr: 0x0, PC: [0xb786a313, B786A313]

      It seems that the first bind value (variable version) is not filled at all. But it also may crash for another reason (???)

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            charles Charles Yin (closed Nokia identity) (Inactive)
            charles Charles Yin (closed Nokia identity) (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes