CREATE PROCEDURE selectSongsByDateTemp @Day int, @Month int, @Year int, @fromP int
AS
SELECT TOP 10 * from (
SELECT TOP @fromP HitParad.id,HitParad.Composition, Sum(vote_HitParad.Points) AS [Sum-Points], HitParad.Performer, HitParad.current_date_now, Day(current_date_now) AS Date,
MONTH(current_date_now) AS Month, YEAR(current_date_now)
AS Year
FROM HitParad INNER JOIN vote_HitParad ON HitParad.id = vote_HitParad.id_song AND (Day(vote_HitParad.[Date])<=@Day ) AND (Month(vote_HitParad.[Date])<=@Month ) AND (Year(vote_HitParad.[Date])<=@Year )
GROUP BY HitParad.id,HitParad.Composition, HitParad.Performer, HitParad.current_date_now
order by [Sum-Points] desc ) as S
Выдает ошибку в строке SELECT TOP @fromP ... если @fromP меняю явно на число то все пашет.. В чем проблема ???
Здравствуйте Jcomp, Вы писали:
J>Выдает ошибку в строке SELECT TOP @fromP ... если @fromP меняю явно на число то все пашет.. В чем проблема ???
Написал бы хоть сервер какой.
А дело скорее всего в сервере... Это MSSQL на сколько я понимаю, а он не умеет с переменными TOP работать..
Здравствуйте Merle, Вы писали:
M>Здравствуйте Jcomp, Вы писали:
J>>Выдает ошибку в строке SELECT TOP @fromP ... если @fromP меняю явно на число то все пашет.. В чем проблема ???
M>Написал бы хоть сервер какой.
MS SQL 7.0 M>А дело скорее всего в сервере... Это MSSQL на сколько я понимаю, а он не умеет с переменными TOP работать..
Умеет ... раз так работает Select top 10 * from table
Значит умеет
Здравствуйте Jcomp, Вы писали:
J>Здравствуйте Merle, Вы писали:
M>>Здравствуйте Jcomp, Вы писали:
J>>>Выдает ошибку в строке SELECT TOP @fromP ... если @fromP меняю явно на число то все пашет.. В чем проблема ???
J> M>>Написал бы хоть сервер какой. J>MS SQL 7.0 M>>А дело скорее всего в сервере... Это MSSQL на сколько я понимаю, а он не умеет с переменными TOP работать.. J>Умеет ... раз так работает Select top 10 * from table J>Значит умеет
В примере "select top 10 from * ..." 10 — это не переменная, это константа.
С константами он работает, а с переменными — нет
Здравствуйте Jcomp, Вы писали:
J>Умеет ... раз так работает Select top 10 * from table J>Значит умеет
Да ну? Логика однако... Если напрямую число указать, то да, работает, а если указать переменную, то нет, так как судя по всему во время разбора запроса в ключевые слова числа вместо переменных не подставляются.
В BOL про переменные в TOP ничего не сказано, к сожалению сходу ничего не нашел...
Здравствуйте Merle, Вы писали:
J>>Выдает ошибку в строке SELECT TOP @fromP ... если @fromP меняю явно на число то все пашет.. В чем проблема ??? M>Написал бы хоть сервер какой.
M>А дело скорее всего в сервере... Это MSSQL на сколько я понимаю, а он не умеет с переменными TOP работать..
Именно так и есть.
Возможно поможет SET ROWCOUNT @fromP вместо TOP.