Неоднозначная ошибка Sql от VS-2005 - PullRequest
0 голосов
/ 31 августа 2011

Это серьезные вопросы: это ошибка в Sql Query Analyzer?.

Я столкнулся со странной ситуацией, когда я протестировал следующий запрос на Sql Query Analyzer:

insert into PLCommonTotal(CmnTotal)
select
case
when p.NetpurTot > s.NetsalTot then
(
select NetpurTot from PLPurchaseTotal
)
else
(
Select NetsalTot from PLSaleTotal
)
end
from PLPurchaseTotal p
join PLSaleTotal s
on p.companyID=s.companyID

select * from PLCommonTotal

Этоработает очень хорошо, без ошибок из Sql Query Analyzer.

Теперь посмотрите на тот же запрос в VS-2005:

string tot5 = " insert into PLCommonTotal(CmnTotal)" +
                " select" +
                " case" +
                " when p.NetpurTot > s.NetsalTot then" +
                " (" +
                " select NetpurTot from PLPurchaseTotal" +
                " )" +
                " else" +
                " (" +
                " Select NetsalTot from PLSaleTotal" +
                " )" +
                " end" +
                " from PLPurchaseTotal p" +
                " join PLSaleTotal s" +
                " on p.companyID=s.companyID";
            SqlCommand comcmd = new SqlCommand(tot5, con);
            comcmd.Transaction = trans;
            comcmd.ExecuteNonQuery();

Это ошибка Sql throw: «подзапрос вернет больше, чемодно значение.Это недопустимо, если подзапрос следует =! = <<=>> = Или когда подзапрос использовал выражение.Оператор завершен ».

Я хочу задать вопрос, если он не разрешен, чем то, почему он выполняется из анализатора запросов SQL без какой-либо ошибки?.

Есть ли ошибкакоманды SQL?.

1 Ответ

2 голосов
/ 31 августа 2011

Когда вы написали запрос, это произойдет, если у вас будет более одной строки в PLPurchaseTotal или PLSaleTotal. Я думаю, что вы не используете одну и ту же БД в SSMS и в VS-2005.

С другой стороны, я подозреваю, что это запрос, к которому вы стремитесь.

insert into PLCommonTotal(CmnTotal)
select
  case
    when p.NetpurTot > s.NetsalTot
    then p.NetpurTot
    else s.NetsalTot
  end
from PLPurchaseTotal p
  join PLSaleTotal s
    on p.companyID=s.companyID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...