日期:2014-05-18  浏览次数:20911 次

sql语句报错 大家看看问题出在哪里
SELECT   TOP   @pageSetup     FROM   jobs   WHERE   (job_id   NOT   IN   (SELECT   TOP   @toPage   job_id   FROM   jobs   ORDER   BY   job_id))   ORDER   BY   job_id


服务器:   消息   170,级别   15,状态   1,行   1
第   1   行:   '@pageSetup '   附近有语法错误。
服务器:   消息   170,级别   15,状态   1,行   1
第   1   行:   '@toPage '   附近有语法错误。



------解决方案--------------------
@pageSetup,@toPage是什么东东!
好象应该是数字吧!
SELECT TOP @pageSetup * FROM jobs WHERE (job_id NOT IN (SELECT TOP @toPage job_id FROM jobs ORDER BY job_id)) ORDER BY job_id
加上一个*看看!

------解决方案--------------------
你的ORDER BY job_id 后面的是升序还是降序要不要写呢?
比如ORDER BY job_id desc
------解决方案--------------------
select 后面没有写查询的列名嘛.至少也得加个*呀
------解决方案--------------------
你先把那俩变量换成数字,看错不错
------解决方案--------------------
top后面加上一个整数
------解决方案--------------------
SELECT TOP @pageSetup * FROM jobs WHERE job_id NOT IN (SELECT TOP @toPage job_id FROM jobs ORDER BY job_id) ORDER BY job_id

这样试试

------解决方案--------------------
这样是不行的 需要转成字符处理.
begin
declare @sql varchar(2000)

select @sql = "SELECT TOP " + @pageSetup + " * FROM jobs WHERE (job_id NOT IN (SELECT TOP " + @toPage + " job_id FROM jobs ORDER BY job_id)) ORDER BY job_id "

exec (@sql)
end
------解决方案--------------------
TOP要指定前几位,如前10
SELECT TOP(10) @pageSetup FROM jobs WHERE (job_id NOT IN (SELECT TOP(10) @toPage job_id FROM jobs ORDER BY job_id)) ORDER BY job_id

------解决方案--------------------
select top 10 * form biao
------解决方案--------------------
要写成字符串的,至于注入嘛,在传入存储之前做检测替换就行了
------解决方案--------------------
应该是这样:
SELECT TOP @page Setup FROM jobs WHERE (job_id NOT IN (SELECT TOP @toPage job_id FROM jobs ORDER BY job_id)) ORDER BY job_id
@page和Setup之间少了个空格

------解决方案--------------------
top 后不能跟变量
------解决方案--------------------
应该这样写
declare @sql varchar(255)
set @sql = 'SELECT TOP ' + @pageSetup + ' FROM jobs WHERE (job_id NOT IN (SELECT TOP ' + @toPage + ' job_id FROM jobs ORDER BY job_id)) ORDER BY job_id '

exec(@sql)
------解决方案--------------------
同意最后一个的意见,因为top要指定筛选的内容
------解决方案--------------------
select top * from Table
------解决方案--------------------
up
------解决方案--------------------
晕,变量不能写在SQL语句里,
要不认不出来,

用+ " "
------解决方案--------------------