Я пытаюсь вернуть строку с несколькими значениями, содержащую значения от одного и того же пользователя. Я создал хранимую процедуру, которая возвращает 3 выхода.Сохраненная процедура для возврата кратных строк в приложение ASP.NET MVC
Мне нужно получить все значения строк, а не только первое.
То, что я возвращаю, это имена и местоположения.
хранимой процедуры:
ALTER PROCEDURE [dbo].[GetCountries]
@UserID int,
@Name nvarchar(10) output,
@Latitude float output,
@Longitude float output
AS
BEGIN
SET NOCOUNT ON;
SET @Nombre = (SELECT p.Name
FROM Places AS p
INNER JOIN Places_Details AS pd ON p.Name = pd.Name
WHERE p.Id_User = @UserID)
SET @Latitude = (SELECT pd.Latitude
FROM Places AS p
INNER JOIN Places_Details AS pd ON p.Name = pd.Name
WHERE p.Id_User = @UserID)
--set @Longitude = (SELECT pd.Longitude
-- FROM Places as p INNER JOIN Places_Details as pd ON p.Name = pd.Name WHERE p.Id_User = @UserID)
SELECT @Name, @Latitude, @Longitude
END
И в ASP.NET MVC:
public List<PlacesModel> getMyPlaces()
{
PlacesList = new List<PlacesModel>();
try
{
using (SqlConnection sqlConnection = DbConnection.OpenConnection())
{
using (SqlCommand sqlCommand = new SqlCommand("GetCountries", sqlConnection))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(sqlCommand);
sqlCommand.Parameters["@UserID"].Value = 415;//UserRepository.getInstance().getUserId();
sqlCommand.Parameters["@Name"].Value = "";
sqlCommand.Parameters["@Latitude"].Value = 415;
sqlCommand.Parameters["@Longitude"].Value = 415;
sqlCommand.ExecuteNonQuery();
string name = (string) sqlCommand.Parameters["@Nombre"].Value;
double lat= (double)sqlCommand.Parameters["@Latitude"].Value;
double lon = (double)sqlCommand.Parameters["@Longitude"].Value;
if(!name.Equals("") & lat > 0 && long> 0)
{
PlacesModel placesm = new LugaresModel();
placesm.Place = name;
placesm.Latitude = Convert.ToString(lat);
placesm.Longitude = Convert.ToString(lon);
PlacesList.Add(placesm);
}
}
sqlConnection.Close();
}
}
catch (Exception e)
{
e.GetBaseException();
}
return PlacesList;
}
}
Я получаю эту ошибку:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Любое решение? Спасибо
Вы освобождаете 'SELECT' предложения более чем одной записи –
На основании сообщения об ошибке кажется, что один из ваших запросов в хранимой процедуре возвращает несколько строк/записей. Если вы ожидаете только одну строку из запросов 'select' или нужна только 1-я строка, вы можете достичь этого, добавив' TOP 1' в свои 'select' заявления. – fujiFX
Мне нужно получить все кратные строки, а не только первые. – Azrael94