-3
votes

Récupérez toutes les données de la table salariale et calculez également le salaire brut (BASIC + HRA + DA + CA + CA + CA + SYDICAL) à titre de procédure stockée? à Oracle

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> xxx pré>

- appelant SP à l'aide de l'exécution - p> xxx Pré>

- appelant SP à l'aide de PLSQL Block - P>

begin 
   proc_grosssalary;
end;  


3 commentaires

Hmm, c'est juste un seul Sélectionnez , 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


5 Réponses :


0
votes

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;


1 commentaires

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"



0
votes

Vous devez utiliser un curseur afin que vous puissiez boucler sur des enregistrements dans la table.

Voici ce que j'ai fait - xxx

vérifier en ligne - https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=1744281398fe6241947249


7 commentaires

Lorsque l'exécution de la même erreur se produit, j'avais essayé ce code


@Bruno Il y avait un supplémentaire , 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 pour chaque colonne souhaitée dans votre sortie. Je suis sûr que vous pouvez le faire vous-même.



0
votes

Vous devez également envisager la possibilité de créer une vue. xxx

et simplement faire SELECT * à partir de v_grosssalary pour obtenir la sortie.

Avec les procédures, il existe également une commande impression (qui fonctionne dans le développeur SQL * Plus et SQL) à l'aide de curseur Variables de liaison xxx


1 commentaires

@Bruno: Avez-vous essayé? Où ai-je mentionné cela ne fonctionne pas dans Oracle11G?



0
votes

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;


1 commentaires

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



0
votes

tâche terminée: xxx

- exécution de la procédure à l'aide du bloc PLSQL - xxx

ci-dessous est prévu résultat final: xxx


4 commentaires

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