CREATE PROCEDURE GetSaleTop
@TopCount INT = NULL

AS  
     
DECLARE @SQLString NVARCHAR(1000)
DECLARE @SaleOrBuy NVARCHAR(4)
  
SET @SaleOrBuy = N'Sale'
    
SELECT * FROM PRT WHERE SaleOrBuy =  @SaleOrBuy 

解决方案 »

  1.   

    CREATE PROCEDURE GetSaleTop
    @TopCount INT = NULL

    AS  
         
    DECLARE @SQLString VARCHAR(1000)
    DECLARE @SaleOrBuy VARCHAR(4)
      
    SET @SaleOrBuy = N'Sale'
        
    SELECT * FROM PRT WHERE SaleOrBuy =  @SaleOrBuy
      

  2.   

    对不起我写错了:
    应该是:
    CREATE PROCEDURE GetSaleTop
    @TopCount INT = NULL

    AS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = N'Sale'
        
    SET @SQLString ='SELECT '+ CAST(@TopCount, NVARCHAR(32) ) + ' FROM PRT WHERE SaleOrBuy = '+ @SaleOrBuy 

    exec (@SQLString)我想实现: 取出 PRT 表中 字段 SaleOrBuy = 'Sale' 的前面若干行(@TopCount) 数据结果包错: 运行dbo."GetSaleTop" ( @TopCount = 8 ).列名 'Sale' 无效。
      

  3.   

    CREATE PROCEDURE GetSaleTop
    @TopCount INT = 0 --默认值0显示全部记录

    AS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = N'Sale'

    set rowcount @TopCount    
    SET @SQLString ='SELECT * FROM PRT WHERE SaleOrBuy = '''+@SaleOrBuy +'''' exec (@SQLString)
    set rowcount 0
      

  4.   

    if (@TopCount =null)
    begin
        set @TopCount =10  --默认取10条或者其它,不能为NULL
    endSET @SQLString ='SELECT  TOP '+ CAST(@TopCount, NVARCHAR(32) ) + ' *  FROM PRT WHERE SaleOrBuy = '+ @SaleOrBuy 
      

  5.   

    请问: vinsonshen(天冷了,要冬眠了...) '''是 个双引号 + 1个单引号吗?
      

  6.   

    这样你就明白了:CREATE PROCEDURE GetSaleTop
    @TopCount INT = 0 --默认值0显示全部记录

    AS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = N'Sale'

    set rowcount @TopCount    
    SET @SQLString ='SELECT * FROM PRT WHERE SaleOrBuy = '+char(39)+rtrim(@SaleOrBuy) +char(39) exec (@SQLString)
    set rowcount 0
      

  7.   

    CREATE PROCEDURE GetSaleTop
    @TopCount INT = NULL

    AS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = 'Sale'
        
    SET @SQLString ='SELECT top '+ CAST(@TopCount as varchar(3) ) + ' * FROM PRT WHERE SaleOrBuy = '''+ @SaleOrBuy +''''

    exec (@SQLString)
      

  8.   

    CREATE PROCEDURE GetSaleTop
    @TopCount INT = NULL

    AS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = 'Sale'
    if @TopCount is not  null     
    SET @SQLString ='SELECT top '+ CAST(@TopCount as varchar(3) ) + ' * FROM PRT WHERE SaleOrBuy = '''+ @SaleOrBuy +''''
             else
              SET @SQLString ='SELECT  * FROM PRT WHERE SaleOrBuy = '''+ @SaleOrBuy +''''

    exec (@SQLString)
      

  9.   

    CREATE PROCEDURE GetSaleTop
    @TopCount INT = NULLAS  
         
    DECLARE @SQLString NVARCHAR(1000)
    DECLARE @SaleOrBuy NVARCHAR(4)
      
    SET @SaleOrBuy = N'Sale'
        
    SET @SQLString ='SELECT top '+@TopCount +'* FROM PRT WHERE SaleOrBuy = '''+ @SaleOrBuy +''''exec (@SQLString)