Динамический ИЗБРАННЫЙ TOP @var в SQL Server

После первого scanf () в каждом scanf () в части форматирования поместите пробел

. Измените этот

scanf("%c",&val);

на этот

scanf(" %c",&val);

Причина в том, что scanf () возвращает, когда видит новую строку, а при первом запуске scanf () вы вводите ввод и нажмите enter. scanf () потребляет ваш вход, но не остается новой строкой, поэтому после scanf () потребляет эту оставшуюся новую строку.

Помещение пробела в части форматирования делает оставшуюся новую строку потребляемой.

291
задан Brian Kim 26 January 2009 в 23:41
поделиться

4 ответа

SELECT TOP (@count) * FROM SomeTable

Это будет только работать с SQL 2005 +

529
ответ дан Brian Kim 4 November 2019 в 11:16
поделиться

Синтаксис "избранная вершина (@var)..." только работает в SQL-СЕРВЕРЕ 2005 +. Для SQL 2000 можно сделать:

set rowcount @top

select * from sometable

set rowcount 0 

Hope это помогает

Oisin.

(отредактированный для замены @@ rowcount rowcount - благодарит augustlights)

39
ответ дан x0n 4 November 2019 в 11:16
поделиться

В примере x0n это должно быть:

SET ROWCOUNT @top

SELECT * from sometable

SET ROWCOUNT 0

http://msdn.microsoft.com/en-us/library/ms188774.aspx

11
ответ дан Codewerks 4 November 2019 в 11:16
поделиться

Его также возможный использовать динамический SQL и выполнить его с исполнительной командой:

declare @sql  nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)
3
ответ дан Jan 4 November 2019 в 11:16
поделиться
Другие вопросы по тегам:

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