Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/08/2007, 18h05   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
Par défaut appeler la focntion plsql avec java.

bonjour,
j'ai crée ma focntion sous oracle et je veux appeler cette fonction par java.
j'ai créer mon code en utilisant biensur collableStatement();
Code :
1
2
3
4
5
6
7
8
9
10
 
			Class.forName("oracle.jdbc.OracleDriver");        
 
	          String url = "jdbc:oracle:thin:@localhost:1521:CHEYMA";
 
	          con = DriverManager.getConnection(url,"MOI","teima");
	         stm = con.prepareCall("{?=call density()}");
 
 
		        stm.execute();
je veux afficher le résualt j'ai trouver qu'il exuxte une méthode qui s'appele registeroutparameter() mais elle m'affiche rien.
est ce que kk1 a une idée.???
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 20h43   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Bonjour,
C'est plutot un problème java qu'oracle non
ceci peux peut être t'aider :
http://java.developpez.com/faq/jdbc/...lableStatement
Après si tu ne nous dit pas ce que fait ta fonction pl, on va pas pouvoir t'aider plus que ça ...
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2007, 21h26   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
Merci pour l'orientation,
mais dit moi stp, les paramètres que je doit mettre dans la méthode registeroutparameters() par exemple
Code :
registeroutparameter(1,types.float)
pour mon code java n'accèpte types .float ou bien types.integer.
est ce qu'il fo une bibliothèque?? a ajouter???
Code :
1
2
3
4
5
6
7
8
9
10
Class.forName("oracle.jdbc.OracleDriver");        
 
	          String url = "jdbc:oracle:thin:@localhost:1521:CHEYMA";
 
	          con = DriverManager.getConnection(url,"MOI","teima");
	         stm = con.prepareCall("{?=call density()}");
	         stm.registerOutParameter(1,Types.float);
 
 
		        stm.execute();
en fait ma fonction est ecrite sous oracle et permet de calculer la densité de la base. c a d le nombre de valeurs non nulles sur le total des valeurs.
Merci
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 08h13   #4
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Citation:
en fait ma fonction est ecrite sous oracle et permet de calculer la densité de la base. c a d le nombre de valeurs non nulles sur le total des valeurs.
Merci
Ouaip j'ai vu ton autre post : http://www.developpez.net/forums/sho...d.php?t=401340
As tu déjà fait un peu de java ?
tu fait un import java.sql.*; au debut de ton programme et tu nommes correctement ton type :
Code :
registeroutparameter("resultat",java.sql.Types.FLOAT);
essaye au moins de repomper un code en réflechissant un minimum à ce que tu fais
Sinon il existe pour java une javadoc qui te donne tout plein d'info de ce genre
Ou alors tu as aussi Google
Sinon tu as la methode : "je recherche par moi même" qui fonctionne aussi pas mal
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 16h32   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
bonjour,
donner l'information ou l'aide a kk 1 ki en a besoin c pas se moquer ou donner les conseils de recherche. je les ai connu tous mais mon problème c'est le temps.
ok
Merci pour l'info
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 16h34   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
j'ai écrit une fonction
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE FUNCTION datecoherence() RETURN date IS
  x date;
 
  requete VARCHAR2(200);
 
begin
  requete := 'Select DATEDEDEBUDEVALIDITE from CONDITIONGENERALE where numerversion = 58 ';
 
  EXECUTE IMMEDIATE
    INTO x;
 
  RETURN x;
end;
elle me retourne toujours 16 kan je tape /
un message d'erreur s'affiche .
Code :
Warning: FUNCTION created WITH compilation errors
kk 1 a une idée ??
je vois pas l'erreeur.
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 16h51   #7
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Faut pas se mettre en colère
Je ne me moquais pas, j'essai de comprendre d'où vient ton problème.
Est ce que tu as résolu ton problème java ?
Pour ce qui est de ta fonction, essaye ça :
Code :
1
2
3
4
5
6
CREATE OR REPLACE FUNCTION datecoherence ()
RETURN DATE IS X DATE;
BEGIN
SELECT DATEDEDEBUDEVALIDITE INTO X FROM CONDITIONGENERALE WHERE numerversion = 58; 
RETURN X;
END;
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 18h27   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
bonjour,
Pardon mais ca marche pas, normalemen il m'affiche function created.
je vois d'ou l'erreur.
meme j'ai mis where owner='MOI';
ca marche pas
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2007, 06h22   #9
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Code :
1
2
3
4
5
CREATE OR REPLACE FUNCTION datecoherence RETURN DATE IS X DATE;
BEGIN
SELECT DATEDEDEBUDEVALIDITE INTO X FROM CONDITIONGENERALE WHERE numerversion = 58; 
RETURN X;
END;
ouaip désolé, si ta fonction n'a pas de paramétre en entrée, alors il faut supprimer les parentheses.
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 21h02   #10
Candidat au titre de Membre du Club
 
Inscription : juillet 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 78
Points : 12
Points : 12
bonsoir,
je te remerci ,
j'ai besoin d'une information a propos:
j'ai ecrit une procedure qui permet de compter le nombre total des valeurs dans ma base.
je cherche a ecrire une fonction qui me permet de compter le nombre de valerus dans une seule table. j'arrive.
voila ma procedure.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SET serveroutput ON SIZE 1000000
declare
nom_table 			   all_tab_columns.table_name%TYPE;
nb_valeurs_total              Number:=0;
nb_valeur_non_null_par_col NUMBER := 0;
nb_colonnes            NUMBER := 0;
nb_total               Number:=0;
nb_totals                 Number:=0;
requete 			   VARCHAR2(200);
BEGIN
FOR colonnes IN (SELECT table_name,column_name
		  FROM user_tab_columns  )     
loop
	-- réinitialisation des variables si on passe à une autre table
	IF NVL(nom_table,'0') != colonnes.table_name THEN
	   nom_table := colonnes.table_name;
	END IF;
     requete := ' SELECT COUNT(*) FROM ' || nom_table;
     EXECUTE IMMEDIATE requete INTO nb_total;
     nb_valeurs_total := nb_valeurs_total + nb_total;
      requete := 'SELECT COUNT(*) FROM ' ||  nom_table ||' WHERE ' || colonnes.column_name || ' IS  NOT NULL';
	   EXECUTE IMMEDIATE requete INTO nb_valeur_non_null_par_col;
          nb_totals := nb_totals + nb_valeur_non_null_par_col;
    end loop; 
 DBMS_OUTPUT.PUT_LINE(nb_valeurs_total || ' valeur (s)   dans la base');  
 
 
END;
/
pardon pouvez vous m'aidez svp
080983 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h20.


 
 
 
 
Partenaires

Hébergement Web