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

语法错误,错在那里?
create   function   getTable(@topNumber   int)
returns   Table
as
return(select   top     @topNumber   *   from   tablename)
创建这样一个函数,错误提示: '@topNumber '   附近有语法错误。

是不是top   后面要跟数字的原因?我把@topNumber   换成常量如20就可以了
要实现这个函数应该怎么写

------解决方案--------------------
create function getTable(@topNumber int)
returns Table
as
return(exec( 'select top '+ @topNumber + ' * from tablename ')

------解决方案--------------------
top后面不能跟@topNumber,要将 select top @topNumber * from tablename 写成字符串,exec执行才行。

exec( 'select top ' + cast(@topNumber as varchar) + ' * from tablename ')
------解决方案--------------------
樓上各位,函數裡可以使用動態語句嗎?


改用存儲過程

create Procedure getTable(@topNumber int)
as
exec( 'select top ' + @topNumber + ' * from tablename ')
GO
------解决方案--------------------
也可以不用动态语句,如下
create PROCEDURE getTable
@topNumber int=10

as

set rowcount @topnumber -- 设置受影响的行数
select * from tablename

go