我是新的C#和我在SQL Server中的存储过程:为什么从C#调用存储过程时出现错误?
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_getUserInfo]
@TelNo = N'2537743007'
SELECT 'Return Value' = @return_value
GO
,并尝试调用此代码:
using (SqlConnection con = new SqlConnection("Data Source=SERVICE;Initial Catalog=InvokeADSL;Integrated Security=True"))
{
using (SqlCommand cmd = new SqlCommand("sp_getUserInfo", con))
{
cmd.CommandType = CommandType.StoredProcedure;
//cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
cmd.Parameters.Add("@TelNo", SqlDbType.NVarChar).Value = "253774300";
con.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["return_value"].ToString());
}
}
}
,但我得到一个错误:
System.IndexOutOfRangeException: return_value
at System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName) at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
at System.Data.SqlClient.SqlDataReader.get_Item(String name)
at ConsoleApplication1.Program.Main(String[] args)
我该如何解决?谢谢。
这是SQL Server我的存储过程:link to code
此异常意味着你试图通过索引来访问集合项目,使用无效索引。当索引低于集合的下限或大于或等于其包含的元素数量时,索引无效。 –
@KingReload如何处理收集? –
使用索引位置而不是名称。阅读器[0] .ToString() – Thangadurai