J'ai créé une procédure qui calcule le salaire brut de tous les employés de Tableaux de salaire.Lorsque exécutant la procédure stockée à l'aide d'une erreur d'instruction Execute: "Énoncé SQL non valide" se produit et lorsque j'exécute une procédure d'exécution à l'aide de PLSQL Block, l'erreur ": PLS-00905 Hr.proc_grossalary est invalide "Se produit
- Création de procédure stockée - p> - appelant SP à l'aide de l'exécution - p> - appelant SP à l'aide de PLSQL Block - P> begin
proc_grosssalary;
end;
5 Réponses :
Votre syntaxe PL / SQL n'est pas correcte
create or replace procedure proc_grosssalary (out gross_salary number) AS begin select (Basic+HRA+DA+CA+Medical) into gross_salary from salary s; end;
Lorsque l'exécution de la même erreur se produit, j'avais essayé cette erreur de code: "Pas une fonction ou un nom de procédure valide"
Vous devez utiliser un curseur afin que vous puissiez boucler sur des enregistrements dans la table.
Voici ce que j'ai fait - p> vérifier en ligne -
Lorsque l'exécution de la même erreur se produit, j'avais essayé ce code
@Bruno Il y avait un supplémentaire code>, Boneist corrigé l'errata.
Peut-être vient de `, juste essayer de changer avec 'à la ligne 8
Créer ou remplacer la procédure Proc_Grosssalary Alors que les salaires du curseur sont sélectionnés s. *, (Basic + HRA + DA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + CA + SALAIRE DE SALAIRE Commencez pour les enregistrements dans Salaires Loop DBMS_Output.Put_Line («Salaire brut est '|| Records.Gross_Salary) ; boucle de fin; finir; / finir; - exécuter SP à l'aide de PLSQL - Commencer Proc_Grossalary; finir;
Je souhaite également toutes les données de la table salariale avec un salaire brut
Je veux toutes les données avec un salaire brut
Vous devez simplement ajouter des codes dbms_output.put_line code> pour chaque colonne souhaitée dans votre sortie. Je suis sûr que vous pouvez le faire vous-même.
Vous devez également envisager la possibilité de créer une vue. et simplement faire Avec les procédures, il existe également une commande SELECT * à partir de v_grosssalary code> pour obtenir la sortie. P>
impression code> (qui fonctionne dans le développeur SQL * Plus et SQL) à l'aide de
curseur code> Variables de liaison p>
@Bruno: Avez-vous essayé? Où ai-je mentionné cela ne fonctionne pas dans Oracle11G?
Mais .. que voulez-vous faire? Si vous voulez calculer un salaire pour chaque employé et que vous avez vos informations dans la même ligne, avec un simple SQL, vous pouvez l'avoir, quelque chose comme ceci:
Select id_emp, name_emp, surname_emp, (Basic+HRAs+DA+CA+Medical) as salary from salary;
Oui, mais ma condition est de créer une procédure avec le même résultat.Je peut faire une vue ou écrire une requête simple sélectionnée pour obtenir le résultat. Aidez-moi s'il vous plaît à écrire une requête dans la procédure ou la même fonction pour obtenir la même sortie
tâche terminée: - exécution de la procédure à l'aide du bloc PLSQL - p> ci-dessous est prévu résultat final: p>
Pouvez-vous m'aider dans dbms_outputtputtputt de mise en forme pour que les données soient au format du tableau et que cette logique doit également être écrite dans la procédure stockée
Votre réponse doit faire partie de la question et non une réponse distincte. Je crois aussi que les réponses mentionnées devraient déjà suffire à vous aider à résoudre votre problème.
Code ci-dessus est ma réponse et j'essaie de créer une procédure stockée à l'aide du curseur récupérant également des données de la table salariale et de calculer le salaire brut pour chaque employé.
@Sudiptamondal vérifier ma question maintenant
Hmm, c'est juste un seul
Sélectionnez CODE>, pourquoi n'utilisez-vous pas une vue?
L'erreur est que vous ne sélectionnez pas le résultat de l'instruction SQL dans une variable. Cependant, ce que vous avez fait jusqu'à présent n'a aucun sens. Vous sélectionnez les lignes, mais ne rien faire avec eux. Que voulez-vous vraiment faire avec eux? Les stocker quelque part? Stocker une somme des résultats quelque part? Transmettre les résultats à un autre programme?
C'est possible mais sans créer SP. Je souhaite créer SP qui calculer le salaire brut