2015-08-07 1 views
1

J'ai ce code SQL. Il fonctionne juste bien quand je lance cela à partir du développeur SQL. J'ai besoin d'exécuter de mon script groovyjava.sql.SQLException: ORA-00933

sql.executeInsert("INSERT INTO s_status (C_DATE, sl_id, st_id, PARENT_st_id, STATUS, DETAILS, ACTIVE_IND) SELECT cd.cc_date, sl_id, st_id+1 st_id, st_id parent_st_id, 'CONFIRMED' status, 'SQL' details, 'Y' active_ind FROM s_status ss JOIN v_c_dates cd ON 1=1 WHERE (sl_id, st_id) IN (SELECT sl.sl_id, MAX(st_id) st_id FROM s_status ss JOIN stats sl ON ss.sl_id = sl.sl_id JOIN site si ON si.site_id = sl.site_id JOIN orders d ON d.ord_id = si.ord_id GROUP BY sl.sl_id) and ss.active_ind = 'N' and ss.status = 'SENT'") 

Je vois cette erreur dans ma console groovy quand je lance ce billet depuis groovy. Aidez-moi figuing l'erreur

java.sql.SQLException: ORA-00933: SQL command not properly ended 

Répondre

1
INSERT INTO s_status (C_DATE, sl_id, st_id, PARENT_st_id, STATUS, DETAILS, ACTIVE_IND) 
SELECT cd.cc_date, sl_id, st_id+1, st_id, 'CONFIRMED', 
'SQL', 'Y' 
FROM s_status ss JOIN v_c_dates cd ON 1=1 
WHERE (sl_id, st_id) IN 
(SELECT sl.sl_id, MAX(st_id) --use table alias before st_id 
FROM s_status ss JOIN stats sl ON ss.sl_id = sl.sl_id 
JOIN site si ON si.site_id = sl.site_id 
JOIN orders d ON d.ord_id = si.ord_id 
GROUP BY sl.sl_id) 
and ss.active_ind = 'N' and ss.status = 'SENT' 

Vous n'avez pas besoin aliasing dans la déclaration select. Modifié votre déclaration en conséquence. Vous devez également regarder le commentaire dans le code où vous devez utiliser un alias de table.

0

J'ai eu plusieurs cas où ORA-00933 a été causée par la sensibilité à la casse. Assurez-vous que les références de nom de table et de colonne correspondent au schéma.