Rückgabewert einer stored procedure bei Oracle

Alles rund um die Programmierung mit Qt
Antworten
Korgen
Beiträge: 42
Registriert: 28. März 2006 16:37

Rückgabewert einer stored procedure bei Oracle

Beitrag von Korgen »

Hallo zusammen,
ich versuche eine Stored Procedure einer Oracle Datenbank aufzurufen, in der der Rückgabewert vom Typ VARCHAR2 ist.
Die Procedure gibt einen VARCHAR2 mit einer vierstelligen Nummer zurück (z.B. sollte wenn die zu benutzenden Nummer < 1000 ist der VARCHAR2 '0900' zurückkommen).
Wenn ich die Procedure im Sql+ manuell aufrufe (Declare,Begin,End) funktioniert das auch wunderbar.
Wenn ich nun aber über QSqlQuery gehe:

Code: Alles auswählen

        QString qstrSqlStatement= "CALL myProcedureName(?,?,?,?)";
        query.prepare( qstrSqlStatement );
        query.bindValue( 0, m_qstrIdentifier );
        query.bindValue( 1, iNumberBlockMin );
        query.bindValue( 2, iNumberBlockMax );
        query.bindValue( 3, 0, QSql::Out );

        if ( query.exec() )
        {
            QVariant var = query.boundValue( 3 );
            resultString = var.toString();
        }
Ist der Variant, den ich über "boundValue(3)" zurückbekomme vom Typ QVariant::Int und somit hat der resultString auch nur 3 Zeichen (also statt '0900' nur '900').
Gibt es vielelicht eine Möglichkeit beim query.bindValue den Typ eines QSql::Out Parameters anzugeben?
Hat sonst jemand einen Hinweis?

Vielen Dank

Korgen

P.S.: Qt = 4.3.1
WinXP SP2
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Wenn du sowieso einen QString zurück gibst, dann kannst du ihm doch eine 0 voranstellen, falls das Ergebnis <1000.
Korgen
Beiträge: 42
Registriert: 28. März 2006 16:37

Beitrag von Korgen »

klar, so mach ich's im Moment auch. Ist aber an sich ja nicht die optimale Lösung, da das die Datenbank eigentlich ja schon für mich erledigt und ich das eigentlich auch für die bessere Lösung halte.
Antworten