я написал эту функцию в SQLСкалярная функция SQL с 3 параметров в C#
alter function TVprest (@emitente int, @mes int, @ano int)
returns float
as
begin
declare @tcu float;
select @tcu = sum(cast(vtprest as money))
from ctrc
where emitente = @emitente and MONTH (EMISSAODATA) = @mes
and YEAR (EMISSAODATA)[email protected] and status = 'A'
if (@tcu is null)
set @tcu = 0;
return @tcu
end
И пытаюсь вызвать ту же функцию в C# с этим кодом:
public double TVprest (int emitente, int mess, int anno)
{
double saida;
SqlConnection abre1 = Tconex.GetConnection();
SqlDataAdapter da3 = new SqlDataAdapter();
if (abre1.State == ConnectionState.Closed) { abre1.Open(); }
SqlParameter emit = new SqlParameter("@emitente", SqlDbType.Int);
emit.Value = emitente;
SqlParameter mes = new SqlParameter("@mes", SqlDbType.Int);
mes.Value = mess;
SqlParameter ano = new SqlParameter("@ano", SqlDbType.Int);
ano.Value = ano;
SqlCommand TotalF = new SqlCommand("SELECT dbo.Tcupom(@emitente,@mes,@ano),", abre1);
TotalF.CommandType = CommandType.Text;
saida = Convert.ToDouble(TotalF.ExecuteScalar());
return saida;
}
При запуске я получаю это ошибка:
Не удалось преобразовать значение параметра от SqlParameter к Int32
Что не так? Вызов функции с этими параметрами:
double Tvprest = impx.TVprest(504, 5, 2013);
lblVtprest.Text = Tvprest.ToString();
btw; вы видите, что назначаете 'ano.Value = ano;' - должно быть '= anno'? –
Подождите минуту. Ваш C#, похоже, вообще не вызывает хранимую процедуру. Как здесь хранится процедура? – catfood