Delete ordonné par paquets
Bonjour à tous,
Je bloque sur une requête, n'étant pas un grand du SQL. La requête est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| delete
from MA_AWARD_TITLE
where AWARD_TITLE_ID in (select award.AWARD_TITLE_ID
from (MA_AWARD_TITLE award left join MA_WINS wins on wins.AWARD_TITLE_ID=award.AWARD_TITLE_ID)
left join MA_CONTRIBUTOR_WINS c_wins on c_wins.AWARD_TITLE_ID=award.AWARD_TITLE_ID
where award.ASSET_ID is null
and wins.AWARD_TITLE_ID is null
and c_wins.AWARD_TITLE_ID is null
and rownum > 0
and rownum <= 100
order by award.AWARD_TITLE_ID
) |
Et elle me renvoie "[Error Code: 907, SQL State: 42000] ORA-00907: parenthèse de droite absente" lors d'une exécution sous DBVisualiseur par exemple (Hibernate idem).
Mon Oracle est un 10g.
Losque j'éxécute juste la "sous-requête" suivante je n'ai pas de soucis :
Code:
1 2 3 4 5 6 7 8 9
| select award.AWARD_TITLE_ID
from (MA_AWARD_TITLE award left join MA_WINS wins on wins.AWARD_TITLE_ID=award.AWARD_TITLE_ID)
left join MA_CONTRIBUTOR_WINS c_wins on c_wins.AWARD_TITLE_ID=award.AWARD_TITLE_ID
where award.ASSET_ID is null
and wins.AWARD_TITLE_ID is null
and c_wins.AWARD_TITLE_ID is null
and rownum > 0
and rownum <= 100
order by award.AWARD_TITLE_ID |
Je pense que le soucis vient du "order by" mais je ne peux pas m'en passer, en effet mon code métier doit supprimer les entrées de la table par paquets de 100 donc de façon ordonnée de manière à passer au paquet suivant si un échec a lieu.
Si l'un de vous peut m'aiguiller ;)