今天写了个SELECT语句:SELECT TOP @ NUM * FROM XXXX 一执行,呵呵,居然错误,呵呵,到底是怎么回事情呢~?
大家都知道SELECT TOP 3 * FROM XXXX 是能执行的,但是如果要把这个3写成3*3,呵呵,那就不行了,郁闷把!
但是在用的时候,我们往往要把这个TOP 3弄成一个TOP @NUM 这样才符合我们的需要么,嘿嘿!
我于是上GOOGLE去GO了一下,
原来这里面还是有技巧的说.来看一下代码
DECLARE @SQL VARCHAR(100)
DECLARE @NUM INT
SET @NUM = 3
SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * FROM XXXX '
EXEC(@SQL)
--PRAINT(@SQL)
呵呵,有意思把! 其实SQL 还是执行了 SELECT TOP 3 * FROM XXXX
原理就不用说了把,但是里面有个小技巧,有时候会发生错误,这个时候你就要用
PRAINT出来看一下SQL语句是不是正确的了,因为我们的SQL语句在字符串里,系统是检查不出来哦~!
哎!!我的文笔实在是太差了,连说话能力都有问题,估计,呵呵,还有问题的话,上GOOGLE里找去落!(喂,GOOGLE,你要给广告费了~!)
另外说明,SQL SERVER 2005是可以直接用代参数的TOP的哦,就不用这么麻烦类~~!微软的东西,哎~~!
大家都知道SELECT TOP 3 * FROM XXXX 是能执行的,但是如果要把这个3写成3*3,呵呵,那就不行了,郁闷把!
但是在用的时候,我们往往要把这个TOP 3弄成一个TOP @NUM 这样才符合我们的需要么,嘿嘿!
我于是上GOOGLE去GO了一下,
原来这里面还是有技巧的说.来看一下代码
DECLARE @SQL VARCHAR(100)
DECLARE @NUM INT
SET @NUM = 3
SET @SQL = 'SELECT TOP '+CAST(@NUM AS VARCHAR(20))+' * FROM XXXX '
EXEC(@SQL)
--PRAINT(@SQL)
呵呵,有意思把! 其实SQL 还是执行了 SELECT TOP 3 * FROM XXXX
原理就不用说了把,但是里面有个小技巧,有时候会发生错误,这个时候你就要用
PRAINT出来看一下SQL语句是不是正确的了,因为我们的SQL语句在字符串里,系统是检查不出来哦~!
哎!!我的文笔实在是太差了,连说话能力都有问题,估计,呵呵,还有问题的话,上GOOGLE里找去落!(喂,GOOGLE,你要给广告费了~!)
另外说明,SQL SERVER 2005是可以直接用代参数的TOP的哦,就不用这么麻烦类~~!微软的东西,哎~~!
浙公网安备 33010602011771号