CONECTAREA LA ALTE PRODUSE ORACLE


Scopurile capitolului:


Aceasta sectiune discuta cum se poate lega SQL*Forms cu o varietate de alte produse.

Produsele implicate sunt:

  1. SQL*ReportWriter
  2. programe scrise in limbajul C
  3. SQL*TextRetrieval
  4. PRO*Oracle
  5. Oracle*Terminal


Conectarea la SQL*ReportWriter


Utilizati procedura "packaged" HOST pentru a chema:


  --------------------------------------------------------------
 |  Action Query Group Field Summary Text Report Parameter Help |
 | |New      |===========SQL*ReportWriter====================== |
 | |Open     |                                                  |
 | |Copy     |                                                  |
 | |Rename   |                                                  |
 | |Drop     |                                                  |
 | |Execute  |                                                  |
 | |Generate |                                                  |
 | |Quit     |                                                  |
 |  ---------                                                   |
 |                                                              |
 |                                                              |
 |                                                              |
 |   Create a new report                                        |
 |   Report Name:                                   Replace     |
  --------------------------------------------------------------

Nu se poate invoca SQL*Forms din SQL*ReportWriter.


Conectarea la SQL*ReportWriter


Utilizati procedura HOST pentru a chema SQL*ReportWriter.
Puteti chema SQL*ReportWriter run-time engine si SQL*ReportWriter design-time engine din SQL*Forms (RunForm) utilizand procedura HOST.

Exemple:

  1. Pentru a porni SQL*ReportWriter design-time engine fara parametri:
              HOST ('SQLREP');
    

  2. Urmatoarea comanda porneste SQL*ReportWriter run-time engine si paseaza parametri pentru RUNREP:
              HOST ('RUNREP demo_rep scott/tiger depno=10');
    

  3. Se pot defini variabile sau variabile globale PL/SQL si acestea sa fie alocate comenzii RUNREP:
         :global.runrep := 'RUNREP demo_rep scott/tiger deptno=' ||
    TO_CHAR (:dept.deptno);
    

  4. Dupa ce ati definit global.runrep, trigger-ul poate invoca SQL*ReportWriter cu urmatorul apel:
              HOST (:global.runrep);
    

    Nu puteti invoca SQL*Forms din SQL*ReportWriter.

Conectarea la alte produse Oracle



Conectarea la alte produse Oracle



SQL*Plus


Este posibila conectarea la SQL*Plus prin folosirea procedurii packaged HOST.

Urmatorul exemplu realizeaza logarea in SQL*Plus, ruleaza raportul ORDERRPT, furnizeaza valorile de 10 si 20 pentru parametri &1 si &2 ai raportului:
     HOST ('SQLPLUS scott/tiger orderrpt 10 20');

Folosind comanda RUNFORM se poate apela SQL*Forms din SQL*Plus. La folosirea comenzii RUNFORM, trebuie omise id-ul utilizator si parola deoarece RUNFORM accepta doar informatiile curente de login. Deoarece se evita o logare separata la ORACLE, accesarea unei forme din SQL*Plus este mai rapida decat de la linia de comanda. (Atentie: disponibilitatea comenzii RUNFORM depinde de modul in care a fost instalat SQL*Plus).


Apelarea formelor din programe C


Este posibila apelarea unei aplicatii SQL*Forms dintr-un program scris in limbajul C folosind comanda IAPCAL. Sintaxa comenzii IAPCAL permite specificarea unei comenzi linie standard RUNFORM mai putin cuvantul cheie RUNFORM si id-ul utilizator si parola. Utilizatorul trebuie sa se logheze explicit la baza de date dupa executia comenzii IAP.

Exemplu: Urmatoarea declaratie ruleaza forma ORDER_ENTRY cu optiunile -a, -b si -d:
     int iapcal ("-abd order_entry");


Apelarea rutinelor PRO*Precompiled ("User Exits")


SQL*Forms poate accesa orice rutina precompilata creata cu versiunea 1.3 (sau ulterioara) a unui precompilator Oracle. Foloseste procedura packaged USER_EXIT pentru a apela rutina.

SQL*TextRetrieval



SQL*TextRetrieval


Ce este SQL*TextRetrieval?


SQL*TextRetrieval ofera un sistem pentru stocarea, gestionarea si recuperarea ("retrieval") materialului text. O facilitate cheie este aceea ca un text poate fi tinut intr-un format nestructurat si utilizatorul il poate recupera din materialul nestructurat cat si din datele structurate.

Ar fi ineficient sa se caute in materialul nestructurat de fiecare data cand il utilizeaza cineva, asa cum se intampla la un editor. SQL*TextRetrieval permite utilizatorului sa construiasca si sa recupereze informatia din indexuri de text.

SQL*TextRetrieval ofera extensii la standardul SQL si permite utilizatorului sa acceseze textul prin interogari care pot fi formulate simplu. Aceasta nu necesita schimbari in Oracle RDBMS. Facilitatile de "text retrieval" sunt integrate in kernelul Oracle si informatiile structurate si nestructurate sunt depozitate in aceeasi baza de date.


Limbaj extins de recuperare text("retrieval")


SQL*TextRetrieval ofera clauza CONTAINS suplimentar la limbajul SQL, clauza care faciliteaza recuperarea datelor text. Interogarile pot fi realizate si pe campuri structurate ale bazei de date si pe text:
     SELECT *
     FROM text_table
     WHERE author = 'S.HAWKINS'
     AND text_column CONTAINS 'DATA'

Limbajul extins de retrieval SQL*TextRetrieval permite logica booleana, wildcards, cautare fonetica si aproximativa. Este posibila de asemenea legarea sinonimelor, termenilor cu inteles mai larg, termenilor cu inteles restrans si o varietate de termeni mai slab legati.


Dezvoltarea de aplicatii


SQL*TextRetrieval permite dezvoltarea de aplicatii in SQL*Forms, fie prin folosirea unui set de iesiri utilizator ("user exits") fie prin scrierea unor programe PRO*C utilizand un set echivalent de functii C. Iesirile utilizator dau posibilitatea utilizatorului sa opereze interogari text (create, edit, drop, load, refine, save, etc) si sa le execute.

SQL*TextRetrieval versiunea 1.1.7 sau ulterioare suporta SQL*Forms versiunea 3.

User exits (iesirile utilizator)




User exits (iesirile utilizator)


O iesire utilizator este o bucata de logica 3GL, scrisa de obicei intr-unul din limbajele pentru care Oracle are precompilator:
     COBOL
     PASCAL
     ADA
     FORTRAN
     PL1
     C
 

Dupa ce codul iesirii utilizator este scris si compilat, trebuie "legat" la programul Runform (fisierul executabil pe care il apelati cand dati comanda Runform). Cu alte cuvinte, iesirile utilizator se gasesc intr-o biblioteca externa oricarei forme particulare. (Consultati "Oracle installation reference" pentru tipul dumneavoastra de hardware pentru detalii privind legarea iesirilor utilizator).

Dupa legare, o puteti apela din orice forma prin procedura User_Exit:
     User_Exit ('fred');

Sintaxa completa pentru chemarea iesirilor utilizator:

     USER_EXIT (user_exit_string [,error_string]);

unde:

     user_exit_string     specifica numele iesirii utilizator si
                          orice parametri care trebuiesc dati

     error_string         un mesaj de eroare care va fi afisat
                          daca apelul iesirii utilizator nu
                          reuseste



Exemplu:
    USER_EXIT ('fred BISTO '||:stats.year_to_date, 'Statistics
unavailable');

NOTA: SQL*Forms (Runform) poate fi legata la iesiri utilizator din Oracle Interface Call, precum si la iesiri utilizator non-Oracle.


Argumente PRO si CONTRA iesirilor utilizator



De ce sa scrieti iesiri utilizator?


Inaintea versiunii 3, triger-ii SQL*Forms nu erau scrisi in PL/SQL si de aceea lipsea logica procedurala disponibila in prezent la triger-ii V3. Proiectantii scriau frecvent iesiri utilizator pentru a avea proceduri 3GL care realizau procesari care altfel erau ineficiente sau imposibile prin triger-i.

Prin aparitia lui PL/SQL, numarul e motive pentru iesirile utilizator s-a diminuat simtitor. Mai exista unele avantaje care sunt enumerate:

Iesirile utilizator:

Dezavantaje:


Ce este Oracle*Terminal?