2012-08-29 5 views
3

J'ai une procédure stockée simple SQL Server:Initialiser paramètre de sortie de procédure stockée

ALTER PROCEDURE GetRowCount 

(
@count int=0 OUTPUT 
) 

AS 
Select * from Emp where age>30; 
SET @[email protected][email protected]@ROWCOUNT; 

RETURN 

Je suis en train d'initialiser et accéder au paramètre de sortie dans le code C#:

SqlConnection con = new SqlConnection(); 
con.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True"; 

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 

cmd.CommandText = "GetRowCount"; 
cmd.Parameters.Add(new SqlParameter("@count", SqlDbType.Int)); 
cmd.Parameters["@count"].Direction = ParameterDirection.Output; 
con.Open(); 
cmd.Parameters["@count"].Value=5; 
cmd.ExecuteNonQuery(); 

int ans = (int)(cmd.Parameters["@count"].Value); 
Console.WriteLine(ans); 

Mais la course le code, un InvalidCastException est lancé à la deuxième dernière ligne du code (j'ai débogué et vérifié que rien n'est retourné dans l'attribut de valeur).

Comment initialiser correctement le paramètre de sortie dans le code? Merci d'avance!

+0

double possible de [Accès paramètre de sortie de procédure stockée SQL Server en C#] (http://stackoverflow.com/questions/12174399/accessing-sql-server-stored-procedure-output -parameter-in-c-sharp) – podiluska

+1

Je suis celui qui a posé cette question il y a à peu près une heure, mais c'est un problème complètement différent – ankit0311

Répondre

1

Vous ne devez pas initialiser un paramètre output. Utilisez ParameterDirection.InputOutput pour transmettre la valeur à la procédure stockée.

La cause la plus probable d'une exception de type est que la procédure renvoie DBNull.Value. Vous pouvez tester cela comme:

var ans = cmd.Parameters["@count"].Value as int?; 
Questions connexes