[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    385

    Total Free und SQL --> Eine schlechte Lösung?

    Hallo zusammen,

    wenn ich in einem SQLRPGLE eine DCL-DS definiere um diese für eine SELECT INTO zu nutzen, dann sagt der SQL-Precompiler, das er die Zielvariable (Also die DS) nicht kennt.

    Wenn ich die DS mit einer normalen D bzw. I Karte definiere, dann geht es...

    Kann es sein, das IBM eben nicht alles mitgezogen hat?

    Danke an alle Helfenden.

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das wäre ja nicht ungewöhnlich, wenn der SQL Precompiler backlevel ist (ich erinnere mich nur, wie lange es gedauert hat, bis der qualified DS und lokale Variablen konnte...)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Vielleicht fehlen euch nur ein paar PTFs?

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Bei uns geht das (bisher) auch nicht. Wir haben und damit abgefunden, Hostvariablen einzeln zu deklarieren und nicht direkt die Felder aus der Datenstruktur zu verwenden.

    Wir sind auf 7.1 TR 11

    Dieter

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... wobei man dieses Problem (bei adäquater Vorgehensweise) nicht hat.
    Datenbanklogik gehört (eigentlich) ins View-Layer ( create view as select...) und dann hat man im Programm nur noch select * from myView order by ,,, und die DS für den fetch wird dann als E DS deklariert - und falls das mit real totally free nicht geht, dann ist das eh Murks (Krampf ist das eh...)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Es geht hierbei ja nicht immer um Datenstrukturen, die den Datensatz abbilden. Ich meine Datenstrukturen, die ich im Programm deklariere, um z.B. brutto, netto und mwst abzubilden:
    Code:
    dcl-ds summeDS qualified:
       brutto packed(15:2);
       netto packed(15:2);
       mwst packed(15:2);
    Da würde ich schon gerne so etwas schreiben wie:
    exec sql select sum(xx_brutto) into :summeDS.brutto from tabellexx;

    In dieser Konstellation hilft mir eine View nicht weiter, denke ich.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... was hast Du gegen
    create view AufttragSumme (oder whatever) as
    select sum(xx-brutto) as brutto, sum(...) as netto, sum(...) as mwst
    from...

    dann wird deine SummeDS zur e ds und du füllst die dann mit select * from AuftragSumme into ...

    die dahinter stehende Ideen sind Entkoppelung (verwende niemals < never - ever> eine Table im Programm) und Zentralisierung (select sum(..) ist Datenbanklogik!!!) man gewinnt dadurch die Möglichkeit weitgehende strukturelle Änderungen in der Datenbank vorzunehmen, ohne dass dei Anwendung tangiert ist und QS wird einfacher, da die Prgramme im Datenbankzugriff realtiv stumpf sind.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Bei uns (7.2) funktioniert das ganze ohne Probleme.
    Code:
    exec sql select sum(xx_brutto) into :summeDS.brutto from tabellexx;
    Ich bilde mir auch ein schon vor früher 6.1 und 7.1 solche Konstrukte schon mal verwendet zu haben.
    Ich meine DS oder Teile bzw. Felder einer DS im SQL zu verwenden.
    "Leider" kann ich das aber nicht mehr testen da bei uns alles schon auf 7.2 hochgezogen ist.

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Bei uns (7.2) funktioniert das ganze ohne Probleme.
    Code:
    exec sql select sum(xx_brutto) into :summeDS.brutto from tabellexx;
    Ich bilde mir auch ein schon vor früher 6.1 und 7.1 solche Konstrukte schon mal verwendet zu haben.
    Ich meine DS oder Teile bzw. Felder einer DS im SQL zu verwenden.
    "Leider" kann ich das aber nicht mehr testen da bei uns alles schon auf 7.2 hochgezogen ist.
    ... so, so, unter V6R1 free form declarations

    viele Grüße aus Alsheim

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von BenderD Beitrag anzeigen
    ... so, so, unter V6R1 free form declarations

    viele Grüße aus Alsheim

    D*B
    Bezogen auf die ursprüngliche Aussage:
    Zitat Zitat von ExAzubi Beitrag anzeigen
    Wenn ich die DS mit einer normalen D bzw. I Karte definiere, dann geht es...
    Ja, mit einer DS konnte ich das auch schon früher ...

  11. #11
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Zitat Zitat von BenderD Beitrag anzeigen
    ... was hast Du gegen
    create view AufttragSumme (oder whatever) as
    select sum(xx-brutto) as brutto, sum(...) as netto, sum(...) as mwst
    from...

    dann wird deine SummeDS zur e ds und du füllst die dann mit select * from AuftragSumme into ...

    die dahinter stehende Ideen sind Entkoppelung (verwende niemals < never - ever> eine Table im Programm) und Zentralisierung (select sum(..) ist Datenbanklogik!!!) man gewinnt dadurch die Möglichkeit weitgehende strukturelle Änderungen in der Datenbank vorzunehmen, ohne dass dei Anwendung tangiert ist und QS wird einfacher, da die Prgramme im Datenbankzugriff realtiv stumpf sind.

    D*B
    OK, gebe mich geschlagen. Ich kann deine Argumentation nachvollziehen.

  12. #12
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Bei uns (7.2) funktioniert das ganze ohne Probleme.
    Code:
    exec sql select sum(xx_brutto) into :summeDS.brutto from tabellexx;
    Ich bilde mir auch ein schon vor früher 6.1 und 7.1 solche Konstrukte schon mal verwendet zu haben.
    Ich meine DS oder Teile bzw. Felder einer DS im SQL zu verwenden.
    "Leider" kann ich das aber nicht mehr testen da bei uns alles schon auf 7.2 hochgezogen ist.
    Wenn das wirklich klappt, wäre das natürlich schön. Ich muss dass nochmal ausprobieren. Da wir Profound verwenden, können wir in Bildschirmdateien lange Feldnamen verwenden. Die werden intern in einer Datenstruktur im RPG-Programm verarbeitet. Wenn unser Recordformat im Bildschirm f1 heißt, greifen wir z.B. über "f1.bruttobetrag" auf das Bildschirmfeld zu. Das Feld in der Datenstruktur konnten wir (zumindest vor einiger Zeit) nicht direkt mit embedded SQL füllen. Vielleicht geht das ja jetzt. (Oder wir hatten damals ein anderes Problem).

    Dieter

Similar Threads

  1. Eine Marke, eine Halle, eine Messe: IT & Business - Ende September in Stuttgart
    By Isabella Pridat-Zapp in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 10-09-15, 12:50
  2. Total free RPG
    By philsturm in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-09-14, 09:09
  3. Wollte Gestern auf die schlechte Performance hinweisen
    By AS400.lehrling in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 1
    Letzter Beitrag: 13-11-13, 23:54
  4. Antworten: 0
    Letzter Beitrag: 06-06-02, 08:59
  5. schlechte Java-Performance
    By lrmeyer in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 05-03-02, 07:38

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •