![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hi to all ng (sorry for my bad english) I have a problem. in a "c" progam I write an dynamic sql that in run-time give me an error sqlcode = -104 SQLSTATE[42601]. I read in a document (Message Reference ) that come to aid that read a sqllerm. Infact the sqlerrm told you at what point the token should be ok. So I modify my program but the print out of sqlerrm does not help me. Probably I don't keep the right piece, because i don't know the struct of sqlca. So I try to print-out an sql in a log file, and I execute directly in clp. in thi s case work!! so the sql is here "insert into inventari_det ( NVD_NVT_NUMERO_DOCUMENTO , NVD_NUMERO_RIGA , NVD_UBI_LOC_LOCALITA_1 , NVD_UBI_UBICAZIONE_1 , NVD_PRIMO_LIVELLO_1 , NVD_SECONDO_LIVELLO_1 , NVD_TERZO_LIVELLO_1 , NVD_QUARTO_LIVELLO_1 , NVD_ANA_TIPO_ANAGRAFICA , NVD_ANA_CODICE_SAP , NVD_STATO_MATERIALE , NVD_TIPO_MATERIALE , NVD_TRZ_TIPO_TERZO , NVD_TRZ_CODICE_TERZO , NVD_RDA , NVD_SERIAL_NUMBER_1 , NVD_QUANTITA_1 , NVD_GST_PROGRESSIVO_INTERNO , NVD_ORDINE_USCITA_1 , NVD_RIGA_ORDINE_USCITA_1 , NVD_ETICHETTA_1 , NVD_GERARCHIA , NVD_GST_GST_PROGRESSIVO_INT, NVD_DATA_CREAZIONE , NVD_UTENTE_CREAZIONE ) select 65 , row_number() over() , DWH_MAG_UBI_LOC_LOCALITA , DWH_MAG_UBI_UBICAZIONE , DWH_MAG_PRIMO_LIVELLO , DWH_MAG_SECONDO_LIVELLO, DWH_MAG_TERZO_LIVELLO , DWH_MAG_QUARTO_LIVELLO , DWH_ANA_TIPO_ANAGRAFICA , DWH_ANA_CODICE_SAP , DWH_STATO_PALLET , DWH_TIPO_STOCK , DWH_TRZ_TIPO_TERZO , DWH_TRZ_CODICE_TERZO , DWH_RIFERIMENTO_RDA , DWH_SERIAL_NUMBER , DWH_QUANTITA , DWH_PROGRESSIVO_INTERNO, DWH_NUMERO_ORDINE , DWH_NUMERO_RIGA , DWH_NUMERO_ETICHETTA , DWH_GERARCHIA , DWH_GST_PROGRESSIVO_INTERNO, current date , 'InvCreaDet' from dwh_stock x where DWH_ANA_TIPO_ANAGRAFICA in ( substr( 'F' , posstr( 'F' , '-' ) + 1 ) , substr( 'F' , posstr( 'F' , '-' ) + 1 ) ) AND DWH_MAG_UBI_LOC_LOCALITA in ( substr( 'WF1' , posstr( 'WF1' , '-' ) + 1 ) , substr( 'WF1' , posstr( 'WF1' , '-' ) + 1 ) ) AND DWH_MAG_UBI_UBICAZIONE in ( substr( 'WF1-SAM1' , posstr( 'WF1-SAM1' , '-' ) + 1 ) , substr( 'WF1-SAM1' , posstr( 'WF1-SAM1' , '-' ) + 1 ) ) AND DWH_NVT_NUMERO_DOCUMENTO is null AND DWH_DATA_REGISTRAZIONE <= date('05/22/2006') and DWH_DATA_REGISTRAZIONE = ( select max(a.DWH_DATA_REGISTRAZIONE) from dwh_stock a where a.DWH_DATA_REGISTRAZIONE <= date('05/22/2006') and x.DWH_PROGRESSIVO_INTERNO = a.DWH_PROGRESSIVO_INTERNO) " SOMEONE SEE the error ??? Suggest me another way to solve this problem I pray you !!! Just run the statement from the command line or the GUI to get the token. |
#3
| |||
| |||
|
|
eap90210 wrote: Hi to all ng (sorry for my bad english) I have a problem. in a "c" progam I write an dynamic sql that in run-time give me an error sqlcode = -104 SQLSTATE[42601]. I read in a document (Message Reference ) that come to aid that read a sqllerm. Infact the sqlerrm told you at what point the token should be ok. So I modify my program but the print out of sqlerrm does not help me. Probably I don't keep the right piece, because i don't know the struct of sqlca. So I try to print-out an sql in a log file, and I execute directly in clp. in thi s case work!! so the sql is here "insert into inventari_det ( NVD_NVT_NUMERO_DOCUMENTO , NVD_NUMERO_RIGA , NVD_UBI_LOC_LOCALITA_1 , NVD_UBI_UBICAZIONE_1 , NVD_PRIMO_LIVELLO_1 , NVD_SECONDO_LIVELLO_1 , NVD_TERZO_LIVELLO_1 , NVD_QUARTO_LIVELLO_1 , NVD_ANA_TIPO_ANAGRAFICA , NVD_ANA_CODICE_SAP , NVD_STATO_MATERIALE , NVD_TIPO_MATERIALE , NVD_TRZ_TIPO_TERZO , NVD_TRZ_CODICE_TERZO , NVD_RDA , NVD_SERIAL_NUMBER_1 , NVD_QUANTITA_1 , NVD_GST_PROGRESSIVO_INTERNO , NVD_ORDINE_USCITA_1 , NVD_RIGA_ORDINE_USCITA_1 , NVD_ETICHETTA_1 , NVD_GERARCHIA , NVD_GST_GST_PROGRESSIVO_INT, NVD_DATA_CREAZIONE , NVD_UTENTE_CREAZIONE ) select 65 , row_number() over() , DWH_MAG_UBI_LOC_LOCALITA , DWH_MAG_UBI_UBICAZIONE , DWH_MAG_PRIMO_LIVELLO , DWH_MAG_SECONDO_LIVELLO, DWH_MAG_TERZO_LIVELLO , DWH_MAG_QUARTO_LIVELLO , DWH_ANA_TIPO_ANAGRAFICA , DWH_ANA_CODICE_SAP , DWH_STATO_PALLET , DWH_TIPO_STOCK , DWH_TRZ_TIPO_TERZO , DWH_TRZ_CODICE_TERZO , DWH_RIFERIMENTO_RDA , DWH_SERIAL_NUMBER , DWH_QUANTITA , DWH_PROGRESSIVO_INTERNO, DWH_NUMERO_ORDINE , DWH_NUMERO_RIGA , DWH_NUMERO_ETICHETTA , DWH_GERARCHIA , DWH_GST_PROGRESSIVO_INTERNO, current date , 'InvCreaDet' from dwh_stock x where DWH_ANA_TIPO_ANAGRAFICA in ( substr( 'F' , posstr( 'F' , '-' ) + 1 ) , substr( 'F' , posstr( 'F' , '-' ) + 1 ) ) AND DWH_MAG_UBI_LOC_LOCALITA in ( substr( 'WF1' , posstr( 'WF1' , '-' ) + ) , substr( 'WF1' , posstr( 'WF1' , '-' ) + 1 ) ) AND DWH_MAG_UBI_UBICAZIONE in ( substr( 'WF1-SAM1' , posstr( 'WF1-SAM1' , '-' ) + 1 ) , substr( 'WF1-SAM1' , posstr( 'WF1-SAM1' , '-' ) + 1 ) ) AND DWH_NVT_NUMERO_DOCUMENTO is null AND DWH_DATA_REGISTRAZIONE <= date('05/22/2006') and DWH_DATA_REGISTRAZIONE = ( select max(a.DWH_DATA_REGISTRAZIONE) from dwh_stock a where a.DWH_DATA_REGISTRAZIONE <= date('05/22/2006') and x.DWH_PROGRESSIVO_INTERNO = a.DWH_PROGRESSIVO_INTERNO) " SOMEONE SEE the error ??? Suggest me another way to solve this problem I pray you !!! Just run the statement from the command line or the GUI to get the token. You got yourself a syntax error. Probably a missing bracket or so... If all fails: Divide and conquer... Cheers Serge -- Serge Rielau DB2 Solutions Development IBM Toronto Lab |
![]() |
| Thread Tools | |
| Display Modes | |
| |