C# 从存储过程中按名称读取返回参数
有没有办法在C#中按名称从存储过程中读取一些自定义返回参数?迭代方式的工作原理如下:C# 从存储过程中按名称读取返回参数,c#,stored-procedures,C#,Stored Procedures,有没有办法在C#中按名称从存储过程中读取一些自定义返回参数?迭代方式的工作原理如下: SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { while (rdr.Read()) { if (rdr[0] != null) { string PARAM1 = rdr[0].ToString(); } if (rdr[1] != n
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
if (rdr[0] != null)
{
string PARAM1 = rdr[0].ToString();
}
if (rdr[1] != null)
{
string PARAM2 = rdr[1].ToString();
}
if (rdr[2] != null)
{
string PARAM3 = rdr[2].ToString();
}
if (rdr[3] != null)
{
string PARAM4 = rdr[3].ToString();
}
}
}
rdr.Close();
SELECT
'value1' AS 'PARAM1',
199 AS 'PARAM2',
'value2' AS 'PARAM3',
'value3' AS 'PARAM4'
RETURN 0
Param4 = rdr["@YourOutputParameter"].Value
该过程返回如下内容:
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
if (rdr[0] != null)
{
string PARAM1 = rdr[0].ToString();
}
if (rdr[1] != null)
{
string PARAM2 = rdr[1].ToString();
}
if (rdr[2] != null)
{
string PARAM3 = rdr[2].ToString();
}
if (rdr[3] != null)
{
string PARAM4 = rdr[3].ToString();
}
}
}
rdr.Close();
SELECT
'value1' AS 'PARAM1',
199 AS 'PARAM2',
'value2' AS 'PARAM3',
'value3' AS 'PARAM4'
RETURN 0
Param4 = rdr["@YourOutputParameter"].Value
…但按名称或类型获取参数并不令人满意。使用参数名称并获取如下值:
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
if (rdr[0] != null)
{
string PARAM1 = rdr[0].ToString();
}
if (rdr[1] != null)
{
string PARAM2 = rdr[1].ToString();
}
if (rdr[2] != null)
{
string PARAM3 = rdr[2].ToString();
}
if (rdr[3] != null)
{
string PARAM4 = rdr[3].ToString();
}
}
}
rdr.Close();
SELECT
'value1' AS 'PARAM1',
199 AS 'PARAM2',
'value2' AS 'PARAM3',
'value3' AS 'PARAM4'
RETURN 0
Param4 = rdr["@YourOutputParameter"].Value
可能需要将其强制转换为所需的类型,以便字符串使用:
Param4 = rdr["@YourOutputParameter"].Value.ToString();
您真的是指返回参数,即参数方向是
ReturnValue
?或者你说的是结果集?它是rdr[name]而不是数字。你能解释一下什么没有按你想要的方式工作吗?我可以告诉您,如果读卡器有多行,您将在每次循环迭代中覆盖PARAMx
变量,这可能不是您想要的。@UweKöhler您不需要参数,您可以通过rdr[“PARAM1”]直接访问它,参数名为:rdr[name]因为名称未知而无法工作使用参数名称的访问不适用于我,因为名称未知。可能是因为它没有在SQL内部定义为out参数?@UweKöhler请确保您试图获取值的列的名称或列别名存在于select语句中返回的列中