create proc queryhose
@employee_id varchar(5),@top int
as 
set rowcount @top 
select *
from   house_contract join house_state on house_contract.house_id=house_state.house_id
where  employee_id=@employee_id and whether_rent='0'
go

解决方案 »

  1.   

    top 后面只能是常数,不能是变量或表达式.
      

  2.   

    create proc queryhose
    @employee_id varchar(5),@top int
    as 
    select top @top *   --此处没有字段
    from   house_contract join house_state on house_contract.house_id=house_state.house_id
    where  employee_id=@employee_id and whether_rent='0'
    go
      

  3.   

    用动态语句,试试这个:create proc queryhose
    @employee_id varchar(5),@top int
    as declare @string varchar(8000)
    select @string='
    select top '+cast(@top as varchar)+'
    from   house_contract join house_state on house_contract.house_id=house_state.house_id
    where  employee_id='+@employee_id+' and whether_rent=''0'''
    exec(@string)go
      

  4.   

    --或者:create proc queryhose
    @employee_id varchar(5),
    @top int
    as 
    declare @s nvarchar(4000)
    set @s='
    select top '+cast(@top as varchar)+'
    from  house_contract join house_state on house_contract.house_id=house_state.house_id
    where  employee_id=@employee_id and whether_rent=''0'''
    exec sp_executesql @s,N'@employee_id varchar(5)',@employee_id
    go
      

  5.   

    是少了一个*create proc queryhose
    @employee_id varchar(5),@top int
    as declare @string varchar(8000)
    select @string='
    select top '+cast(@top as varchar)+' * 
    from   house_contract join house_state on house_contract.house_id=house_state.house_id
    where  employee_id='+@employee_id+' and whether_rent=''0'''
    exec(@string)go
      

  6.   

    create proc queryhose
    @employee_id varchar(5),
    @top int
    as 
    declare @s nvarchar(4000)
    set @s='
    select top '+cast(@top as varchar)+' *  --少了*
    from  house_contract join house_state on house_contract.house_id=house_state.house_id
    where  employee_id=@employee_id and whether_rent=''0'''
    exec sp_executesql @s,N'@employee_id varchar(5)',@employee_id
    go