À partir du code C#, j'essaie d'appeler un PACKAGE.PROCEDURE() à partir d'Oracle. Dans cet exemple simple je devrais obtenir une valeur de l'appel de procédure, mais tout ce que je reçois est erreur:Comment appeler une procédure Oracle à partir de C#
wrong number or types of arguments in call to 'RETURN_NUM'
La procédure est déclarée comme suit:
PROCEDURE return_num(xNum OUT NUMBER) AS
BEGIN
xNum:= 50;
dbms_output.put_line('hello world ' || xNum);
END;
code C#:
Oraclecon.Open();
OleDbCommand myCMD = new OleDbCommand("TEST.return_num", Oraclecon);
myCMD.CommandType = CommandType.StoredProcedure;
myCMD.Parameters.Add("xNum", OleDbType.Numeric);
OleDbDataReader myReader;
myReader = myCMD.ExecuteReader();
Quelqu'un peut-il s'il vous plaît signaler ce que je fais mal. Puis, dans un vrai scénario que je voudrais appeler une procédure qui renvoie un ensemble de valeurs d'un type personnalisé, par exemple:
TYPE r_interface_data IS RECORD
(
object_id VARCHAR2(16),
obj_type VARCHAR2(32)
);
TYPE t_interfase_data IS TABLE OF r_interface_data;
Comment puis-je aborder cela. Merci!
MISE À JOUR: Dans mon cas particulier, je fini par faire-la démarche suivante
using (OleDbCommand cmd = new OleDbCommand("PACKAGE.procedure_name"))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlManager sqlManager = new SqlManager();
return sqlManager.GetDataSet(cmd);
}
MISE À JOUR: Donc, si je spécifie la direction du paramètre à OUT (voir le code ci-dessous), alors mon code compile; mais je n'ai reçu aucune donnée ... 'myCMD.Parameters.Add (" xNum ", OleDbType.Numeric) .Direction = ParameterDirection.Output; ' Des idées? –