2009-08-27 12 views
0

J'ai une fonction Oracle GetEmployeeDetails qui enregistre tous les détails des employés dans une table temporaire TempEmployeeDetails.Appel d'une fonction Oracle à partir de C#

Je dois appeler la fonction suivie d'une requête select sur la table temporaire. L'appel de fonction réussit mais la requête select renvoie l'erreur suivante.

"BEGIN: Sortie: = MyPackage.GetEmployeeDetails (" + ": EmployeeId,"); SELECT * FROM TempEmployeeDetails; FIN; »

La requête ci-dessus me donne cette erreur:

ORA-06550: ligne 1, colonne 98:

PLS-00428: une clause INTO devrait dans cette instruction SELECT

Répondre

1

Je pense que vous devez séparer la requête de l'appel de fonction, si vous utilisez OracleClient donc le code probablement par:

OracleCommand cmd = new OracleCommand("GetEmployeeDetails", conn); 
cmd.CommandType = CommandType.StoredProcedure; 


par = new OracleParameter("EmployeeId", OracleType.int32); 
par.Value = EmployeeId; 
par.Direction = ParameterDirection.Input; 
cmd.Parameters.Add(par); 

cmd.ExecuteNonQuery(); 

maintenant pour obtenir les données de tempEmployeeDetail s faire une autre requête comme celle-ci:

OracleCommand cmd = new OracleCommand("SELECT * FROM TempEmployeeDetails", conn); 
OracleDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
    //do what you want... 
} 
Questions connexes