Quantcast
Channel: Oracle, MySQL, Sybase, Informix and other databases
Viewing all articles
Browse latest Browse all 1350

Calling an Oracle Stored Procedure with ODP

$
0
0

Hello everybody !!!

I have this oracle stored Procedure :

PROCEDURE sp_cree_planning (
 pi_id_trait   IN T_TRAIT.ID_TRAIT%TYPE,
 pi_f_actif   IN T_PLANNING.F_ACTIF%TYPE,
 pi_id_si    IN T_PLANNING.ID_SI%TYPE,
 pi_lst_loc   IN TABLE_NUMBER,
 pi_lst_par_nom IN table_varchar2_50,
 pi_lst_par_val IN table_varchar2_200,
 pi_d_modif   IN DATE,
 pi_id_user   IN T_USERS.ID_USER%TYPE,
  po_c_erreur   OUT NUMBER,
 po_des_erreur  OUT VARCHAR2 )
IS

l_nom_param   T_PLANNING_PARAM.NOM_PARAM%TYPE;
l_valeur_param T_PLANNING_PARAM.VALEUR_PARAM%TYPE;
l_id_planning  T_PLANNING.ID_PLANNING%TYPE;
l_tab_par    table_par;

l_err_fonc     EXCEPTION;
po_c_erreur_trait  NUMBER;
po_des_erreur_trait VARCHAR2(2000);
BEGIN
po_c_erreur := Pck_Erreur.CST_OK;

 sp_tab_param(pi_lst_par_nom,pi_lst_par_val ,l_tab_par,po_c_erreur_trait,po_des_erreur_trait);
 IF po_c_erreur_trait <> Pck_Erreur.CST_OK THEN
  po_c_erreur := po_c_erreur_trait;
  po_des_erreur := po_des_erreur_trait;
  RAISE l_err_fonc;
 END IF;



IF pi_lst_loc.COUNT <> 0 THEN
 FOR i IN pi_lst_loc.FIRST..pi_lst_loc.LAST  LOOP
  -- création du planning : lien job-lieu
  SELECT SEQ_PLANNING.NEXTVAL INTO l_id_planning  FROM dual;
  INSERT INTO T_PLANNING(ID_PLANNING,ID_TRAIT,ID_LOC,ID_SI,F_ACTIF,ID_USER,D_MODIF)
  VALUES (l_id_planning,pi_id_trait,pi_lst_loc(i),pi_id_si,pi_f_actif,pi_id_user,pi_d_modif);

  IF l_tab_par.COUNT <>0 THEN
    FOR j IN l_tab_par.FIRST..l_tab_par.LAST LOOP
     IF l_tab_par(j).par_nom IS NOT NULL THEN
       INSERT INTO T_PLANNING_PARAM(ID_PLANNING,NOM_PARAM,VALEUR_PARAM,ID_USER, D_MODIF) VALUES
       (l_id_planning,l_tab_par(j).par_nom,l_tab_par(j).par_val,pi_id_user,pi_d_modif);
     END IF;
    END LOOP;
  END IF;
 END LOOP;
END IF;

Somebody may tell me how to call this procedure using C#?

The dificulty is here :

 pi_lst_loc   IN TABLE_NUMBER,
 pi_lst_par_nom IN table_varchar2_50,
 pi_lst_par_val IN table_varchar2_200,

I don't know how to use it here for example :

            Parameter piIdTrait = new Parameter { Name = ParamIdRequest, Type = OracleDbType.Int64, Direction = ParameterDirection.Input };
            piIdTrait.Value = (Int64?)Int64.Parse(idRequest);
            proc.Parameters.Add(piIdTrait );


Thanx very much



Viewing all articles
Browse latest Browse all 1350

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>