@n,是一个存储函数么?,如果是,烦劳你写下,这方面不懂,让我看下
追答1、exec 是 EXECUTE 的缩写。
功能是 执行一个存储过程.
或者是 执行一个 动态SQL
2、 DECLARE @n INT; //声明一个参数 n 是int 型
现在 明白了么?
您的意思是这两个句子都执行么
DECLARE @n INT
exec('select top '+ @n+' * from book4')
是这个意思么?但出来说*附近有语法错误,我用的是SQL 2005。
参数的传入
1> BEGIN
2> DECLARE @Sql NVARCHAR(200);
3> DECLARE @id INT;
4> DECLARE @name VARCHAR(10);
5> SET @id = 1;
6> SET @name = 'C';
7> SET @Sql = 'SELECT * FROM test_dysql WHERE id=@id OR name=@name';
8> PRINT @Sql;
9> EXEC SP_EXECUTESQL @Sql, N'@id INT, @name VARCHAR(10)', @id, @name;
10> END
11> go
SELECT * FROM test_dysql WHERE id=@id OR name=@name
这是一个例子 你看看 我用的是 Oracle 没有办法执行
sql 2005的
追答try this:
SELECT tab.*, ROW_NUMBER() OVER() AS RK
FROM TAB
不知道2005支持rownum没有,如果支持,还可以
select t.*
from (select tab.*, rownum as rk from tab) t
where rk = xxxx
SELECT book4.*, ROW_NUMBER() OVER(order by 内容) FROM book4
这种出来的结果不是某一行啊而是全部,劳烦您解释清楚一些再,我似乎不大懂。呵呵
select book4.*
from (SELECT book4.*, ROW_NUMBER() OVER(order by 内容) as rk FROM book4) t
where rk = 你要的行数