Je convertis une procédure stockée dans certains logiciels que je gère de SQL Server SQL à Informix SQL et les problèmes sont nombreux. Fondamentalement, je convertis chaque section ligne par ligne jusqu'à ce que j'ai tout converti.Impossible d'ajouter une commande ORDER BY à une procédure stockée
Je donne les résultats suivants CREATE PROCEDURE
:
CREATE PROCEDURE ifxdbase:dc_buildSP (WorkID INT, CompNo smallint)
CREATE TEMP TABLE Items
(
Code smallint,
Qty int,
Total int
);
INSERT INTO Items
SELECT
tblDetails.code,
tblDetails.quantity,
tblHead.quantity
FROM
tblHead
INNER JOIN tblDetails ON (tblDetails.compno = tblDetails.compno AND tblDetails.id_num = tblHead.id_num)
WHERE tblHead.compno = CompNo AND tblHead.id_num = WorkID;
--ORDER BY tblDetails.code;
DROP TABLE Items;
END PROCEDURE
En l'état actuel, cela fonctionne très bien, mais quand je décommentez la ligne --ORDER BY tblDetails.seqno;
(et supprimer le point-virgule de la ligne précédente) je reçois un « -201 Une syntaxe erreur s'est produite "erreur.
Fondamentalement tblHead
est une série d'en-têtes d'ordre et tblDetails
est un tableau des détails de chacun de ces ordres. Sélectionner et joindre les données fonctionne bien, essayer de les commander échoue.
commande devrait fonctionner avec quoi que ce soit à partir du SELECT original, IIRC, donc je ne vois pas ce qui pourrait aller mal, ici ...
Pourquoi avez-vous besoin d'une commande par lors de l'insertion des données dans une table? –
le problème n'est pas la procédure stockée, le problème est qu'un ORDER BY clausule n'est pas autorisé dans un INSERT INTO .... SELECT construction – Doliveras