Newsgroup: it.comp.software.database
Titolo: Oracle, numero non valido

Ho una tabella con un campo NUMBER(4), ebbene il numero č corretto č
del tipo (-240... 90) ecc... ma quanto deve essere inserito nella
tabella mi viene un errore con scritto...
Ora:.... numero non valido
Perchč?

> Torakiki

 quindi le cifre sarebbero al massimo tre.
Prova banale:
UTE@SVIL> create table x (aa number(4));
Creata tabella.
SQL> insert into x values(-240);
Creata 1 riga.
SQL> insert into x values (-9999);
Creata 1 riga.
SQL> insert into x values(10000);
insert into x values(10000)
                     *
ERRORE alla riga 1:
ORA-01438: value larger than specified precision allows for this column
SQL> insert into x values('N1');
insert into x values('N1')
                     *
ERRORE alla riga 1:
ORA-01722: invalid number
"Invalid number" e' quando il valore inserito *non e'* un numero valido.
HTH
Byez
Stefano

> Torakiki

A questo punto bisogna vedere cosa fa lui :-)
inserisco solo numeri... che vengono letti da un $_POST ho controllato
l'output... per il momento ho risolto cambiato il tipo di dato nella
tabella, invece di NUMER ho inserito VARCHAR2.
Lo so che non è il massimo della correttezza.. però non sapevo proprio
come fare....

> Torakiki

> Lo so che non è il massimo della correttezza.. però non sapevo proprio

E' un po' un problema, in quanto è PHP e JAVASCRIPT un po' lunghetto,
lo taglio un po', metto la parte che interessa al nostro campo.....
in una pagina c'è un campo hidden di nome DELTA_ORE che verra inviamo
tramite un form, nel momento di essere inviamo vengono fatti questi
controlli in JAVASCRIPT
delta = delta + ((form.ORA_U1.value * 60) + eval(form.MIN_U1.value)) -
((form.ORA_I1.value * 60) + eval(form.MIN_I1.value));
delta = delta -(8*60);
 
		if (-30 < delta && delta < 30)
		{
		form.DELTA_ORE.value = 0;
		} else {
		if (delta <= -30)
		{
		form.DELTA_ORE.value = delta;
		} else if (delta >= 30)
		{
		form.DELTA_ORE.value = delta;
		}
Ho tolto altre istruzioni che con il nostro campo non c'entravano...
Quindi dopo che esegue queste operazioni in javascript spedisce il
tutto tramite un normalissimo form, e con il codice PHP prendo il
DELTA_ORE in questo modo
{$delta = $HTTP_POST_VARS['DELTA_ORE'];}
INSERT INTO ..... VALUES (............'$delta')
anche qui ovviamente ho tagliato molto....

 anche qui ovviamente ho tagliato molto....
premesso che non conosco PHP e non conosco Javascript:
ma per Oracle 'QualunqueCosaTraApiciComeMe' NON è un numero.
Ergo togli gli apici  :)
ciao

> Torakiki

> Torakiki

Mentre cercavo di capire la differenza tra una select e un drop database,
Torakiki ha scritto:

Sono d'accordo con te: io mi riferivo al contesto:
"INSERT INTO ..... VALUES (............'$delta')"
ciao

 "INSERT INTO ..... VALUES (............'$delta')"
Ma perche' non fate delle prove prima ?? Di solito aiuta molto fare 
manualmente cio' che *dovrebbe* fare il programma che stiamo scrivendo, 
almeno siamo sicuri che sia possibile .....
SQL>create table x (pippo number(4));
Creata tabella.
SQL>insert into x values('1');
Creata 1 riga.
SQL>insert into x values(2.2);
Creata 1 riga.
SQL>insert into x values('3.3');
insert into x values('3.3')
                     *
ERRORE alla riga 1:
ORA-01722: invalid number
SQL>insert into x values('-4');
Creata 1 riga.
SQL>select * from x;
     PIPPO
----------
         1
         2
        -4
Non e' che niente niente il tuo caso e' quello del '3.3' ???
HTH
Byez
Stefano

Stefano
Tutti i numeri in quel campo sono interi, niente virgola o punto... e
cmq nella espressione INSERT INTO.... VALUES ('$delta'...) non posso
togliere gli apici in quanto č una regola di PHP, altrimenti non
prende il campo...

 Ma perche' non fate delle prove prima ?? 
perche' siamo pigri e sicuri del nostro sapere ;-)