create proc proc1(@start int)
as
select top @start * from table 
为什么提示“select top @start * from table ” @start有错误呢?

解决方案 »

  1.   


    2000里要用
    exec('select top '+convert(varchar(10),@start)+' * from table')2005里还可以用
    select top (@start) * from table
      

  2.   

    首先我觉得存储过程在创建后 要exec 过程名 才能
    执行至少我没见过这样的语句
      

  3.   


    当然有错.  top 后只能跟常量.
    用 sp_execsql 就可以.
      

  4.   

    exec('select top ' + @start +' * from arrange where Arrange_Characer_Server='+@server)为什么这么写还说字段名 Arrange_Characer_Server无效呢?
      

  5.   

    exec('select top ' + @start +' * from arrange where Arrange_Character_Server= @server')这么写就让我生命变量@server,上面那么写就告诉我列名无效。
      

  6.   

    print ('select top ' + @start +' * from arrange where Arrange_Character_Server= @server') 
    这条语句出来,然后用打印出来的语句执行,抱什么错误.
      

  7.   

    这个是打印结果 select top 1 * from arrange where Arrange_Character_Server= @server
    下面是错误
    服务器: 消息 137,级别 15,状态 2,行 1
    必须声明变量 '@server'。
      

  8.   


    如果把@server放到外面打印出这个结果 :exec('select top ' + @start +' * from arrange where Arrange_Character_Server= '+@server)
    错误是:字段a无效
    select top 1 * from arrange where Arrange_Character_Server= a怎么能在a两边加上单引号啊?
      

  9.   

    select TOp(1) * from  tb_stock1