2009-07-24 8 views
1

Je me demande pourquoi ma ligne "analytics" à l'intérieur d'un "curseur" dans Oracle Forms génère une erreur. Voici comment il est écrit:Oracle Analytics à l'intérieur du curseur

CURSOR READ_C1_REC IS 
    SELECT DISTINCT MACH, TCODE, 
    COUNT(ALL TRANS_NO) OVER (PARTITION BY MACH, 
    TCODE ORDER BY MACH, TCODE) TOTALPERMACHPERTCODE 
    FROM 
    (
    SELECT .... 
    ) 
    ORDER BY MACH, TCODE; 
C1_REC READ_C1_REC%ROWTYPE; 

... et c'est le message d'erreur lors de la compilation:

Error 103 at line 17, column 29 
    Encountered the symbol "(" when expecting one of the following: 

    , from 

..et les points d'erreur à la partie après le mot « OVER » dans les analyses .

Quel pourrait être le problème avec mon code? L'analyse est-elle autorisée à l'intérieur d'un «curseur»?

:)

+0

Oui, c'est autorisé sauf si vous utilisez Oracle 8. Quelle version d'Oracle utilisez-vous? – Theo

+1

Oh, je vois, vous êtes dans des formes Oracle. Pas côté serveur PL/SQL. Peut-être que vous pouvez définir une vue et sélectionner à partir de cette vue? – Theo

+0

Salut Theo, merci pour la suggestion. En ce qui concerne la création d'une «vue», je n'ai pas le privilège d'en faire un. Dans ce cas, y a-t-il une autre solution possible? :) –

Répondre

0

SQL que vous pouvez utiliser dans les formulaires n'a pas progressé depuis plus d'une décennie. SQL dynamique est la meilleure réponse. Je pense que vous devriez regarder EXEC_SQL

1

Oracle Forms a (ou du moins fait en même temps) son propre moteur PL/SQL, et ceci est généralement en retard sur le produit de base de données en termes de fonctionnalités qu'il supporte. Il se peut que votre version de Forms ait un moteur PL/SQL antérieur à l'introduction des fonctions analytiques.

Vous avez dit que vous ne pouvez pas créer de vues; pouvez-vous créer des paquets? Si c'est le cas, vous pourriez peut-être déplacer le code dans un paquet et l'appeler depuis Forms.

Questions connexes