Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro
Con Midnight, Blizzard tenta il colpaccio: il player housing sbarca finalmente su Azeroth insieme a una Quel'Thalas ricostruita da zero. Tra il dramma della famiglia Ventolesto e il nuovo Prey System, ecco com'è la nuova espansione di World of Warcraft
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-12-2017, 19:43   #1
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
[SQL Oracle] Query con uno strano comportamento

Il mio cliente ha deciso di scrivere una singola query di circa 1000 linee.
Non so come l'abbiano partorita, ma funziona in una loro applicazione.

Ora, la query deve essere inserita in una nuova applicazione Java. Io sono incaricato di farlo.
Ecco la sorpresa:
- se eseguo la query tramite JDBC, la query fallisce dicendo che non esiste una tabella (credo sia qualcosa di temporaneo creato all'interno della query);
- se la eseguo via SQL Developer va tutto bene;
- se la salvo e la eseguo ancora via SQL Developer, continua ad andar bene;
- se la eseguo via sqlPlus, la query fallisce esattamente come Java, dicendo che non esiste una tabella;
- se la salvo e la eseguo ancora via sqlplus, la query continua a fallire;

Non credo sia necessario pubblicare una query di 1000 linee senza nemmeno avere la possibilita' di sapere la struttura del database.
Credo che prima di tutto la domanda debba essere: com'e' possibile? Perche' l'applicazione del cliente riesce ad eseguirla - cosi' come SQL Developer (che e' scritto in Java, fra l'altro) - e fallisce con Java e con sqlplus?

Non riesco ad immaginarmi una query simile, ma non sono un grande esperto. Penso che il problema sia dovuto alla creazione di tabelle temporanee all'interno della query, ma questo non mi sembra possa giustificare una simile differenza di comportamento....

qualche idea?
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2017, 20:33   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Scusate, mi rispondo da solo. Ho fatto dei test con sqlplus fino a quando sono riuscito a far eseguire la fat query.
Il problema stava nei settaggi di sqlplus. La fat query ovviamente non e' su una sola riga; inoltre vi erano dei commenti.

Ho eliminato i commenti e impartito questi comandi a sqlplus prima di eseguire la query:

set sqlblanklines on
set sqlterminator ';'

Fatto questo, la query e' stata eseguita correttamente.
Evidentemente il problema erano le linee vuole nella query ed il carattere di terminazione.

Ovviamente ora devo tornare ad affrontare il problema in ambito Java, e mi sa che, viste le premesse, non sara' facilissimo...
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2017, 21:25   #3
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Ok, questo e' l'ultimo
Anche per Java JDBC vale lo stesso problema: non gli piacciono le righe vuote nella query. Anzi, non credo nemmeno che nella query che si passa a jdbc siano ammessi i caratteri di a capo, ma non ne sono sicuro.
Per prova li ho eliminati, sostituendoli con uno spazio per evitare che identificatori a fine ed inizio linea potessero incollarsi ed e' andato tutto!

Ho provato a cercare qualcosa su internet (svogliatamente direi, visto che ho gia' la soluzione) ma non ho trovato questa informazione: quindi, cari colleghi, state attenti a dare in pasto a JDBC una query spezzata su piu' linee

Grazie lo stesso a tutti!
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2017, 08:35   #4
Bazzilla
Senior Member
 
L'Avatar di Bazzilla
 
Iscritto dal: Dec 2010
Messaggi: 2554
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Grazie lo stesso a tutti!
Grazie a te!
__________________
PC: Lenovo Legion 5 15ACH6H Ryzen 7 5800H - RTX 3070
CONSOLE: PS5 (Fibbione) - Xbox Series X (Fibbione)
Bazzilla è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2017, 05:23   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Per me è inconcepibile che non si possano usare quanto meno linee vuote per spezzare query complesse, visto che SQL è un linguaggio abbastanza verboso e comunque non è affatto raro che una query assuma certe dimensioni.

Bah...

Comunque grazie per aver riportato la tua esperienza!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2017, 17:11   #6
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Hai perfettamente ragione.
Comunque l'importante e' saperlo, cosi' da preprocessare la stringa prima di passarla a jdbc. Strano pero' che la cosa non venga nominata nella documentazione ufficiale (o magari mi e' scappata).

Ovviamente jdbc ha anche altri problemi, per esempio non e' in grado di eseguire degli script sql, ma questo gia' si sapeva.
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
La Corea del Sud taglia fuori i bus elet...
GoPro taglia ancora: licenziato il 23% d...
Muse S Athena: la fascia che ti legge ne...
PS5 Pro e PSSR 2.0: tutti i giochi compa...
Dimensity 9600 Pro promette prestazioni ...
BMW i7 2026 adotta celle cilindriche Gen...
Cyberpunk 2077 si aggiorna su PS5 Pro co...
Valve porta Steam Link su Vision Pro per...
Google Maps: ufficiali 3 novità c...
TikTok punta tutto sull'Europa: un milia...
OnePlus Nord 6 ufficiale: arriva con una...
Google lancia di nascosto un'app AI che ...
Sony lancia The Playerbase per inserire ...
WhatsApp si aggiorna con una nuova app c...
Windows 11 23H2, ricerca nel menu Start ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v