Как видно из заголовка, я пытаюсь выполнить хранимую процедуру с C#, но всегда получаю ошибку
Неверное имя столбца
Дело в том, что, если я выполняю его непосредственно в SQL Server Management Studio с теми же параметрами, он просто работает нормально, и я получаю ожидаемые результаты.
Исключение говорит о том, что ошибка относится к этим спецификациям c строки моей процедуры:
UPDATE #TBL_FINAL_RESULT
SET INDICATOR = Y.INDICATOR
FROM #TBL_FINAL_RESULT X
INNER JOIN (
SELECT
Z.Code,
CASE
WHEN Z.M_MonthlyDeviation < 0
THEN (
CASE
WHEN Z.M_MonthlyDeviation < Z.HighReference THEN '8'
WHEN Z.M_MonthlyDeviation > Z.LowReference THEN '9'
ELSE '6'
END
)
ELSE
'9'
END AS Indicator
FROM (
SELECT
A.Code,
A.M_MonthlyReal,
A.M_MonthlyDeviation,
-1 * (A.M_MonthlyReal * 5 /100) as HighReference,
-1 * (A.M_MonthlyReal / 100) as LowReference
FROM #TBL_FINAL_RESULT A
WHERE A.NivelGRD > 1
) Z
)Y ON X.CODE = Y.CODE
Это моя C# функция, которая выполняет хранимую процедуру:
public DataTable ExecuteStoredProcedure_Query(string storedProcedure, List<SqlParameter> parametros = null)
{
DataTable table = new DataTable();
using (var conn = Connection)
{
using (var cmd = new SqlCommand(storedProcedure, Connection))
{
cmd.CommandType = CommandType.StoredProcedure;
if(parametros != null && parametros.Count > 0)
{
foreach (var param in parametros)
{
cmd.Parameters.Add(param);
}
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
try
{
conn.Open();
adapter.Fill(table);
}
catch (Exception ex)
{
throw ex;
}
}
}
return table;
}
И выдает следующее исключение:
Неверное имя столбца 'NivelGRD'
Неверное имя столбца 'Код'
Неверное имя столбца 'M_MonthlyReal'
Неверное имя столбца 'M_MonthlyDeviation'
Неверное имя столбца 'M_MonthlyReal'
Неверный имя столбца 'M_MonthlyReal'
Неверное имя столбца 'CODE'
Я полностью уверен, что эти столбцы существуют во временной таблице. Они используются в других частях процедуры и работают нормально до этого момента.
В чем, по-вашему, проблема?