J'essaie d'utiliser la fonction stockée de la base de données Oracle Express dans l'application C#.L'utilisation de la fonction SQL stockée donne une instruction SQL non valide
OdbcCommand com = new OdbcCommand("SILNIA",sqlConn);
com.CommandType = CommandType.StoredProcedure;
OdbcParameter sqlParam = new OdbcParameter("@ReturnValue", OdbcType.Int);
sqlParam.Direction = ParameterDirection.ReturnValue;
com.Parameters.Add(sqlParam);
com.ExecuteNonQuery();
label1.Content = com.Parameters["@ReturnValue"].Value.ToString();
où la fonction SILNIA (compile sans erreur) est défini:
create or replace
FUNCTION SILNIA RETURN NUMBER IS
w NUMBER := 1;
BEGIN
for i in 1..5 loop
w:=w*i;
end loop;
RETURN w;
END SILNIA;
En ligne:
com.ExecuteNonQuery();
i get
ERROR [42000] [Microsoft][ODBC driver for Oracle][Oracle]ORA-00900: invalid SQL statement.
mais cela fonctionne fonctionne sans problèmes:
OdbcCommand sqlCom = new OdbcCommand("SELECT SILNIA() FROM DUAL", sqlConn);
label1.Content = sqlCom.ExecuteScalar().ToString();
J'ai essayé deux OdbcDataReader r = com.ExecuteReader(); et label1.Content = (chaîne) com.ExecuteScalar(); au lieu de com.ExecuteNonQuery(); et la même erreur se produit. – mmatloka
Vous êtes sûr de ne pas pouvoir exécuter ExecuteNonQuery() pour les SP? Je suis assez confiant que vous pouvez l'appeler ... – mint