create proc p_show_active
@num int
as
Exec('select top ' +@num + '  * from t_s08_khhd order by id desc')

解决方案 »

  1.   

    create proc p_show_active
    @num int
    as
    Exec('select top ' +cast(@num as varchar(20)) + '  * from t_s08_khhd order by id desc')
      

  2.   

    create proc p_show_active
    @num int
    as
    Exec('select top ' +cast(@num as varchar(20)) + '  * from t_s08_khhd order by id desc')
      

  3.   

    为什么TOP后面的参数要这样写??不懂啊
      

  4.   

    必须用动态SQL,没办法,如果字段名,表名也用参数的话也必须这样用动态SQL。
      

  5.   

    必须用动态SQL,没办法,如果字段名,表名也用参数的话也必须这样用动态SQL。
      

  6.   


    create proc p_show_active
    @num int
    as
    declare @sql nvarchar(1000)
    select @sql='select top ' +cast(@num as varchar(20)) + '  * from t_s08_khhd order by id desc'
    exec sp_executesql @sql
      

  7.   

    create proc p_show_active
    @num varchar(5)
    as
    select top cast(@num as int)  * from t_s08_khhd order by id desc
      

  8.   

    我写的
    CREATE proc p_show_customer
    @num int,@type varchar(50)
    as
    declare @sql nvarchar(1000)
    select @sql='select top ' +cast(@num as varchar(20)) + '  * from t_s06_khda  where lb='+@type+' order by zcrq desc'
    exec sp_executesql @sql
    GO
    存储过程语法正确的
    然后调用:
    exec p_show_customer '10' '服务'
    错误提示:
    服务器: 消息 170,级别 15,状态 1,行 1
    Line 1: Incorrect syntax near '服务'.
    为什么??
      

  9.   

    Exec 存儲過程名 參數1,參數2,...
    少了","
      

  10.   

    联机手册里是这么写的@parameter过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。 
      

  11.   


    CREATE proc p_show_customer
    @num int,@type nvarchar(50)
    as
    declare @sql nvarchar(1000)
    select @sql='select top ' +cast(@num as nvarchar(20)) + '  * from t_s06_khda  where lb='+@type+' order by zcrq desc'
    exec sp_executesql @sqlexec p_show_customer 10, '服务'