swanrnd
@swanrnd
Издатель HTML5 игр

Как получить 2 таблицы в хранимой процедуре в SQL Server?

Это отлично работает, когда один результат:
using (var comm = new SqlCommand("dbo.GetProfile", conn))
{
    comm.CommandType = CommandType.StoredProcedure;
    comm.Parameters.Add(new SqlParameter("@uid", uid));
    using (var reader = comm.ExecuteReader())
    {
        if (reader.Read())
        {
            Response.Write(reader["id"]);
            Response.Write(reader["level"]);
        }
    }
}


Но когда нужно получить 2 таблицы, с такой хранимой процедурой:
ALTER PROCEDURE [dbo].[GetProfile]
@uid int
AS
BEGIN
    SET NOCOUNT ON;
	SELECT TOP 1 * FROM dbo.users where id=@uid;
	SELECT * FROM locations;
END

4ccf9ba4793e4bacb5b0b87a4328ec01.png

Как это сделать? Нормальный ли это подход или лучше разбить на 2 процедуры и на 2 запроса.
  • Вопрос задан
  • 1223 просмотра
Решения вопроса 1
lasalas
@lasalas
.NET Architect
...
        if (reader.Read())
        {
            Response.Write(reader["id"]);
            Response.Write(reader["level"]);
        }

        var ok = reader.NextResult(); // <---

        if( !ok ) return;

        if (reader.Read())
        {
            Response.Write(reader["lid"]);
            Response.Write(reader["sublid"]);
        }
...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
А какова цель использования хранимой процедуры только для получения данных? Я понимаю вы бы делали запросы на модификацию с добавлением логики, чтобы все это выполнить на стороне БД, а выборку-то зачем? Если есть конкретные причины, укажите, и подумаем как лучше сделать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы