Avatar billede forceprogrammer Nybegynder
27. februar 2005 - 22:42 Der er 10 kommentarer og
1 løsning

Oracle fejl med dato.

Jeg får følgende fejl når jeg prøver at lægge data ind.

ORA-1830: datoformatbillede slutter før konvertering af hele inputstrengen

Jeg kan ikke gennemskue hvad jeg gør galt.

Her er min kode:

            createCommandSet();
            objCmd.CommandType=System.Data.CommandType.StoredProcedure;
            objCmd.CommandText=commandText;

            objCmd.Parameters.Add("res",Oracle.DataAccess.Client.OracleDbType.Int32,System.Data.ParameterDirection.ReturnValue);
            objCmd.Parameters.Add("pBestilDato",Oracle.DataAccess.Client.OracleDbType.Date,System.Data.ParameterDirection.Input);
            objCmd.Parameters.Add("pBestilBemaerk",Oracle.DataAccess.Client.OracleDbType.Varchar2,System.Data.ParameterDirection.Input);
            objCmd.Parameters.Add("pStedNr",Oracle.DataAccess.Client.OracleDbType.Int32,System.Data.ParameterDirection.Input);
            objCmd.Parameters.Add("pOenskeDato",Oracle.DataAccess.Client.OracleDbType.Date,System.Data.ParameterDirection.Input);
           
            objCmd.Parameters["pBestilDato"].Value="2-2-2004";
            objCmd.Parameters["pBestilBemaerk"].Value="hejsa";
            objCmd.Parameters["pStedNr"].Value="331";
            objCmd.Parameters["pOenskeDato"].Value="2-2-2004";
           
            return (object)objCmd.ExecuteNonQuery();

Jeg håber der er hjælp at hente her
Avatar billede arne_v Ekspert
27. februar 2005 - 22:47 #1
Prøv:

objCmd.Parameters["pBestilDato"].Value=DateTime.Parse("2-2-2004");
...
objCmd.Parameters["pOenskeDato"].Value=DateTime.Parse("2-2-2004");
Avatar billede forceprogrammer Nybegynder
27. februar 2005 - 23:09 #2
Det ser fint ud arne :)

Nu får jeg blot følgende fejl:

ORA-01722: invalid number ORA-06512: at "VEGAS_2.WWW_DB_ACCESS", line 88 ORA-06512: at line 1
Dette er selve den funktion:(linie 74-105)

FUNCTION INSERT_WWW_BESTIL(
                        pBestilDato        IN DATE,
                        pBestilBemaerk     IN VARCHAR2,
                        pStedNr             IN NUMBER,
                        pOenskeDato        IN DATE)

RETURN NUMBER IS

  BestilNr NUMBER;     

BEGIN
   
    SELECT SA_Bestil_Nr.NEXTVAL INTO BestilNr FROM dual;
           
    INSERT INTO TA_WWW_BESTIL (
                        Bestil_nr,
                        Bestil_Dato,
                        Bestil_Bemaerk     ,
                        Sted_Nr,
                        Aktiv,
                        Oenske_Dato)
                           
    VALUES(
                        BestilNr,
                        pBestilDato,
                        pBestilBemaerk,
                        pStedNr,
                        'J', --    pAktiv
                        pOenskeDato);
    RETURN    BestilNr;           

END;
Avatar billede forceprogrammer Nybegynder
27. februar 2005 - 23:09 #3
Håber det er okay jeg udvider spørgsmålet lidt :)
Avatar billede arne_v Ekspert
27. februar 2005 - 23:14 #4
Jo men jeg ved ikke om jeg kan løse det.

Prøv:

objCmd.Parameters["pStedNr"].Value=331;
Avatar billede forceprogrammer Nybegynder
27. februar 2005 - 23:16 #5
Det har jeg prøvet...Det hjalp ikke :(

Den siger det er inde i dbfunktionen jo..
Avatar billede arne_v Ekspert
27. februar 2005 - 23:18 #6
Jeg gætter !

Jeg undrer mig iøvrigt over at pStedNr er NUMBER og ikke INTEGER i
FUNCTION'en når den er Int32 i C#
Avatar billede forceprogrammer Nybegynder
27. februar 2005 - 23:22 #7
Hvad skal jeg ellers kalde den i c#?
Avatar billede arne_v Ekspert
27. februar 2005 - 23:26 #8
SQL NUMBER er C# decimal og så skal du kun finde en god Oracle.DataAccess.Client.OracleDbType.
Avatar billede arne_v Ekspert
27. februar 2005 - 23:26 #9
Men jeg ved ikke om det har noget med problemet at gøre
Avatar billede pnielsen Nybegynder
28. februar 2005 - 08:35 #10
INSERT INTO TA_WWW_BESTIL (
                        Bestil_nr,
                        Bestil_Dato,
                        Bestil_Bemaerk,
                        Sted_Nr,
                        Aktiv,
                        Oenske_Dato)
                           
    VALUES(
                        BestilNr,
                        to_date(pBestilDato, 'DD-MON-YYYY, HH:MI PM'),
                        pBestilBemaerk,
                        pStedNr,
                        'J', --    pAktiv
                        to_date(Oenske_Dato, 'DD-MON-YYYY, HH:MI PM'));
    RETURN    BestilNr;           

you're probably better off explicitly using a date conversion such as:
insert into EJB.POCTradeBeanTbl
(trade_oid, security_oid, position_oid, amount, price, tradeTime)
values
(1, 506, 1, 878.63, 7.16,
to_date('30-NOV-1992, 12:10 PM', 'DD-MON-YYYY, HH:MI PM');
Avatar billede forceprogrammer Nybegynder
02. marts 2005 - 09:06 #11
Jeg fandt fejlen. Det var en SQL fejl.
tak for jeres hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester