同じユーザーの値を含む複数行を返そうとしています。私は、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'句が複数のレコードを返しています –
エラーメッセージに基づいて、ストアドプロシージャのクエリの1つが複数の行/レコードを返しているようです。 'select'クエリから単一行しか期待できない場合や、最初の行が必要な場合は、' select'文に 'TOP 1'を追加してください。 – fujiFX
最初のものだけでなく、すべての倍数の行を取得する必要があります。 – Azrael94