После первого scanf () в каждом scanf () в части форматирования поместите пробел
. Измените этот
scanf("%c",&val);
на этот
scanf(" %c",&val);
Причина в том, что scanf () возвращает, когда видит новую строку, а при первом запуске scanf () вы вводите ввод и нажмите enter. scanf () потребляет ваш вход, но не остается новой строкой, поэтому после scanf () потребляет эту оставшуюся новую строку.
Помещение пробела в части форматирования делает оставшуюся новую строку потребляемой.
SELECT TOP (@count) * FROM SomeTable
Это будет только работать с SQL 2005 +
Синтаксис "избранная вершина (@var)..." только работает в SQL-СЕРВЕРЕ 2005 +. Для SQL 2000 можно сделать:
set rowcount @top
select * from sometable
set rowcount 0
Hope это помогает
Oisin.
(отредактированный для замены @@ rowcount rowcount - благодарит augustlights)
В примере x0n это должно быть:
SET ROWCOUNT @top
SELECT * from sometable
SET ROWCOUNT 0
Его также возможный использовать динамический SQL и выполнить его с исполнительной командой:
declare @sql nvarchar(200), @count int
set @count = 10
set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
exec (@sql)