Le stranezze di Oracle – ORA-00936: missing expression

Questo errore può uscire se all’interno di una query PL/SQL c’è un commento prefissato dal doppio trattino –; la causa è difficile da rintracciare anche perchè in Forms versione 6 questa sintassi non da’ errore. L’azione correttiva è ovviamente eliminare il commento o esprimerlo in sintassi standard /* */

Annunci

Le stranezze di Oracle: ORA-12203 dal client

Mi è capitato presso un cliente di avere un errore ORA-12203 su un eseguibile exe compilato mentre il resto delle funzioni e dei moduli exe potevano connettersi tranquillamente. Il SQLNET.LOG mostra quanto segue:

Fatal NI connect error 12203, connecting to:
 (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=TCP)(PROTOCOL=TCP)(host=192.168.10.44)(Port=1521)))(CONNECT_DATA=(SID=stageven)(CID=(PROGRAM=V:\ORAUTE\form\FMX60\bolle.exe)(HOST=TELE1)(USER=netaop))))
  VERSION INFORMATION:
 TNS for 32-bit Windows: Version 8.0.5.0.0 - Production
 Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 8.0.5.0.0 - Production
  Time: 19-SEP-11 16:19:23
  Tracing not turned on.
  Tns error struct:
    nr err code: 12203
    TNS-12203: TNS:unable to connect to destination
    ns main err code: 12560
    TNS-12560: TNS:protocol adapter error
    ns secondary err code: 0
    nt main err code: 530
    TNS-00530: Protocol adapter error
    nt secondary err code: 38
    nt OS err code: 0

Per risolvere occorre disinstallare/disattivare i programmi antivirus e firewall. Causano sicuramente il problema alcune versioni di:

– Panda antivirus

– Forefront TMG Client

Dopo aver disinstallato i programmi, se ancora non si risolve, possono essere rimaste nel sistema delle impostazioni. In tal caso, con parsimonia e come ultima spiaggia, può essere usato il tool WinsockxpFix della Option^Explicit Software Solutions scaricabile un po’ dappertutto, ad esempio dal link diretto http://files.snapfiles.com/localdl936/WinsockxpFix.exe

L’applicazione corregge il registry eliminando gli inserimenti da antivirus/firewall disinstallati sbloccando le comunicazioni; consente il backup preventivo (consigliato).

I misteri di Oracle. Concatenamento stringhe e ORA-01756

Delle due seguenti query, la prima da’ errore “ORA-01756 quoted string not properly terminated” e la seconda si conclude regolarmente.

Sembra che faccia la differenza lasciare o meno il ; (punto e virgola) alla fine della riga o meno.

select ' )
WHERE xxxx = '||''''||:az||''''||' AND
yyyy = '||:acr||';
COMMIT;'
from dual

select ' )
WHERE xxxx = '||''''||:az||''''||' AND
yyyy = '||''''||:acr||''''||'
;COMMIT;'
from dual

Ottenere il primo del mese in SQL

Query in SQL per ottenere  il primo del mese successivo di una certa data. Nell’esempio successivo, il primo del prossimo mese: Fonte http://www.remote-dba.net/t_garmany_easysql_date_functions.htm

Select trunc(LAST_DAY(sysdate)+1)from dual