Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB6] funzione o classe per convertire dialetti sql

    ciao, avrei la necessità di convertire codice scritto in dialetto sql per sybase in sql per oracle, ciò deve essere fatto runtime per cui mi serve una funzione classe o routine che prendano in pasto la stringa sql...
    avete qualche dritta in proposito o dovrò svilupparmela tutta da solo? in tal caso accetterei volentieri consigli sul modo di procedere per la creazione di tale parser, grazie!
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Hai una lista delle differenze ?
    Dato che il linguaggio SQL è molto più 'umano' una semplice
    lista di istruzioni, mi sa che devi costruire tu stesso le classi
    per il parsing.

    Comincia partendo dall'analisi delle differenze e mappati
    le istruzioni/clausole/operatori che differiscono.
    Poi te li ricerchi nel souce e li rimpiazzi nel target.

    ciao,
    Brainjar.
    Ciao, Brainjar

  3. #3
    Originariamente inviato da Brainjar
    Hai una lista delle differenze ?
    si

    Dato che il linguaggio SQL è molto più 'umano' una semplice
    lista di istruzioni, mi sa che devi costruire tu stesso le classi
    per il parsing.
    potresti scendere un po' nel dettaglio? perchè "le classi" ? non ne basta una? come organizzeresti/svilupperesti te il sistema ?
    grazie...
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Si, potrebbe bastare una classe sola.
    Addirittura potresti usare un array.

    codice:
    1) Creo una classe  ElementoDiff che ha due proprietà 
       a) Source di tipo String che conterrà la parola SYBASE che vuoi
          tradurre.
       b) Target di tipo String che conterrà la parola ORACLE relativa
    
    2) Creo una classe  Converter con :
       a) una proprietà elementi di tipo Collection, che conterrà
          tutti gli elementi di tipo ElementoDiff
    
       b) un metodo Parse effettua una ricerca, parola per parola in una
          stringa source passata come parametro input. Come output una 
          stringa target.  
          Se la parola non è uguale ad un ElementoDiff.Source aggiungo
          la parola, così com'è alla stringa target. Altrimenti, se è
          uguale, aggiungo alla stringa target il valore di  
          ElementoDiff.Target
    Questo a grandi linee.

    Probabilmente è più difficile spiegarlo che scrivere il relativo
    codice.

    Ciao,
    Brainjar.
    Ciao, Brainjar

  5. #5
    grazie innanzitutto per la disponibilità.
    a grandi linee farò così, solo che non tutta la logica del sistema si può risolvere con parolaDaCercare -> parolaDaSostituire, infatti in alcuni casi cambia anche la struttura della query (ad es. con le tabelle temporanee), comunque al più presto mi metterò al lavoro....
    già che ci sei ti sottopongo un quesito banalissimo al quale saprai sicuramente rispondere, l'ho postato qui

    ciao
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.