sql错误 帮忙看看

挨踢直男 2010-04-25 12:59:37
DECLARE @X INT
SET @X = 2
SELECT TOP @X * FROM USER_INFO


这样写是错的

怎么样写才是正确的啊
...全文
50 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehong123 2010-04-25
  • 打赏
  • 举报
回复
热烈欢迎.NET程序员加入108860028群,我们共同进步,追逐各自的梦想!
心中的彩虹 2010-04-25
  • 打赏
  • 举报
回复

--多多动手,相互提升
IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([name] NVARCHAR(10),[sex] INT)
INSERT [tb]
SELECT 'ga',1 UNION ALL
SELECT 'de',0 UNION ALL
SELECT 'ff',1 UNION ALL
SELECT 'hh',1 UNION ALL
SELECT 'kk',0
GO

DECLARE @X INT,@sql varchar(1000)
SET @X = 2
set @sql='SELECT TOP '+cast(@X as varchar(2))+'* FROM tb '
select @sql --结果为"SELECT TOP 2* FROM tb "
exec(@sql)

--结果为
name sex
ga 1
de 0


dawugui 2010-04-25
  • 打赏
  • 举报
回复
--sql 2000
DECLARE @X INT  
SET @X = 2

exec('SELECT TOP ' + ltrim(@X) + ' * FROM USER_INFO')


--sql 2005
DECLARE @X INT  
SET @X = 2
SELECT TOP (@X) * FROM USER_INFO
htl258_Tony 2010-04-25
  • 打赏
  • 举报
回复
OR

DECLARE @X INT,@s varchar(1000)
SET @X = 2
SET @s='SELECT TOP '+ltrim(@X)+' * FROM USER_INFO'
EXEC(@S)
dawugui 2010-04-25
  • 打赏
  • 举报
回复
/*
在TOP后面使用变量
(爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2008-01-02 广东深圳)
*/

--SQL SERVER 2005 的写法
use adventureworks
go

DECLARE @Percentage int
SET @Percentage = 1
SELECT TOP (@Percentage) PERCENT
Name
FROM Production.Product
ORDER BY Name

/*
Name
----------------------
Adjustable Race
All-Purpose Bike Stand
AWC Logo Cap
BB Ball Bearing
Bearing Ball
Bike Wash - Dissolver

(6 行受影响)
*/

-----------------------------------
--SQL SERVER 2000 的写法
create table a([id] [int])
insert into a(id) values(1)
insert into a(id) values(2)
insert into a(id) values(3)
insert into a(id) values(4)
insert into a(id) values(5)

declare @num as int
declare @sql as varchar(2000)
set @num = 2
set @sql = 'select top ' + cast(@num as char) + ' * from a'
exec(@sql)

drop table a
/*
id
-----------
1
2
*/
htl258_Tony 2010-04-25
  • 打赏
  • 举报
回复
2000

DECLARE @X VARCHAR(10)
SET @X = 2
EXEC('SELECT TOP '+@X+' * FROM USER_INFO')
-狙击手- 2010-04-25
  • 打赏
  • 举报
回复
2000


DECLARE @X INT
SET @X = 2
exec('SELECT TOP '+ltrim(@X)+' * FROM USER_INFO')
htl258_Tony 2010-04-25
  • 打赏
  • 举报
回复
2005

DECLARE @X INT
SET @X = 2
SELECT TOP (@X) * FROM USER_INFO

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧