Comment puis-je résoudre ce problème “Instruction SQL ignoré” erreur?
J'ai suivantes petite fonction qui ne compile pas:
function f_query_01 Return interval Day to second is
start_time timestamp(3);
end_time timestamp(3);
time_diff interval Day to second;
c_query_number number;
begin
start_time := systimestamp;
select count(*) into c_query_number from wg; <--This is the line that errors out
end_time := systimestamp;
time_diff := start_time - end_time;
return time_diff;
end f_query_01;
Le compilateur me donne l'erreur suivante:
Error(29,3): PL/SQL: SQL Statement ignored
Error(29,44): PL/SQL: ORA-04044: procedure, function, package, or type is not allowed here
Ce qui est à l'origine de cette erreur et comment puis-je résoudre ce problème?
Ne
Intéressant. Il a essayé ce code, en remplaçant groupe de travail pour une autre petite table. Compilé et exécuté avec succès. Êtes-vous sûr que c'est exactement le code qui avait un problème?
Le problème est que le tableau wg n'existe pas. Une fois que j'ai renommé la table pour le nom correct, tout était bien. J'ai vraiment l'impression que le message d'erreur est assez trompeur dans ce cas, ce qui se passe, mais c'est toujours frustrant.
La "Déclaration ignoré" message signifie que le compilateur essaie de compiler le reste, comme si l'attestation n'était pas là, plusieurs erreurs peuvent se produire par exemple lorsqu'il a été le début d'une boucle sur cette ligne.
[2015-07-12 16:38:48] [65000][6550] ORA-06550: ligne 2, colonne 3: PLS-00905: objet MARTIN.WS11_A5_LOOPER est pas valide ORA-06550: ligne 2, colonne 3: PL/SQL: Déclaration ignoré <- je n'ai aucune chance de trouver le problème, ça craint...
select count(*) into c_query_number from wg;
travailler à l'extérieur de la fonction, lorsque vous exécutez dans la même base de données et le schéma de la fonction?Intéressant. Il a essayé ce code, en remplaçant groupe de travail pour une autre petite table. Compilé et exécuté avec succès. Êtes-vous sûr que c'est exactement le code qui avait un problème?
Le problème est que le tableau wg n'existe pas. Une fois que j'ai renommé la table pour le nom correct, tout était bien. J'ai vraiment l'impression que le message d'erreur est assez trompeur dans ce cas, ce qui se passe, mais c'est toujours frustrant.
La "Déclaration ignoré" message signifie que le compilateur essaie de compiler le reste, comme si l'attestation n'était pas là, plusieurs erreurs peuvent se produire par exemple lorsqu'il a été le début d'une boucle sur cette ligne.
[2015-07-12 16:38:48] [65000][6550] ORA-06550: ligne 2, colonne 3: PLS-00905: objet MARTIN.WS11_A5_LOOPER est pas valide ORA-06550: ligne 2, colonne 3: PL/SQL: Déclaration ignoré <- je n'ai aucune chance de trouver le problème, ça craint...
OriginalL'auteur twamn | 2010-06-24
Vous devez vous connecter pour publier un commentaire.
Il semble que le tableau wg n'existe pas. Lors de la mise à jour pour le corriger nom de la table de la compilation fonctionne sans erreurs. Un message du compilateur de table n'existe pas serait le plus utile.
Je pense que le raisonnement derrière est le message d'erreur que si l'objet n'est pas dans le dictionnaire de données, il doit être défini localement objet, d'où l'expression "procédure, fonction, package, ou tapez", qui sont toutes des choses qui peuvent être définis avec une fonction.
Lorsque j'ai compilé le code, j'ai eu une "table n'existe pas d'erreur". Lorsque j'ai compilé quand j'ai eu un appel de fonction wg, j'ai eu le message d'erreur décrit. Peut-être qu'il était un synonyme public à un autre " wg " quelque part.
OriginalL'auteur twamn
OriginalL'auteur UltraCommit