У меня есть этот метод, который вызывает хранимую процедуру:ASP.NET Хранится метод Процедура не работает
public List<BarcodeClass> CheckTagId(int tagId)
{
barcodes = new List<BarcodeClass>();
try
{
using (SqlCommand command = new SqlCommand("uspCheckTagId", connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@TG", SqlDbType.Int)
{
Direction = ParameterDirection.Input,
Value = tagId
};
command.Parameters.Add(parameter);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
}
}
}
finally
{
connection.Close();
}
return barcodes;
}
Моя проблема заключается это не работает. Я просто получаю это сообщение: произошла ошибка. Я знаю, что это не соединение с базой данных, потому что если я изменил имя хранимых процедур на другую хранимую процедуру, оно не вернет это сообщение об ошибке. У меня есть ощущение, что что-то делать с этой частью:
SqlParameter parameter = new SqlParameter("@TG", SqlDbType.Int)
{
Direction = ParameterDirection.Input,
Value = tagId
};
, потому что я передаю в междах, если я использую другую хранимую процедуру с NVARCHAR и передать в строке это работает! это что-то не так с тем, как я передаю int как параметр?
Вот хранимая процедура:
declare @TG int
declare @L1R nchar(10) -- Label1 Return Variable
declare @L2R nchar(10) -- Label2 Return Variable
declare @L3R nchar(10) -- Label3 Return Variable
declare @L4R nchar(10) -- Label4 Return Variable
declare @LD1R nchar(15) -- LData1 Return Variable
declare @LD2R nchar(15) -- LData2 Return Variable
declare @LD3R nchar(15) -- LData3 Return Variable
declare @LD4R nchar(15) -- LData4 Return Variable
set @TG = 10001
exec uspCheckTagId @TG, @L1 = @L1R output, @L2 = @L2R output, @L3 = @L3R output, @L4 = @L4R output, @LD1 = @LD1R output, @LD2 = @LD2R output, @LD3 = @LD3R output, @LD4 = @LD4R output
print @L1R
print @L2R
print @L3R
print @L4r
print @LD1R
print @LD2R
print @LD3R
print @LD4r
Пожалуйста, помогите! Я не могу отлаживать это, потому что база данных работает только на сервере, на который я нажимаю, и у меня нет доступа к этому серверу.
что такое полное определение proc, а именно верхнее с объявлением параметров? вы опубликовали объявление переменной, а не объявление параметра. По крайней мере, во всех хранимых процедурах я видел. – Kritner
Вы добавили только входной параметр, но, судя по вызову процедуры в коде SQL, есть также восемь выходных параметров. – Guffa
Блок catch для захвата фактической ошибки облегчит поиск и устранение неисправностей. –