2014-04-04 2 views
2

Это мой первый раз, когда я работаю с SQLServer 2012, и у меня есть этот код, он не работает:SET переменного внутри КТР

CREATE PROCEDURE ReadCodeBuffer 
    @gint bigint, 
    @pres tinyint, 
    @level bigint, 
    @quantity smallint, 
    @xmlGenerated xml OUTPUT 
AS 

    DECLARE @current_incremental bigint 
    DECLARE @counter bigint 
    DECLARE @xml XML 

    -- Get current incremental. 
    set @current_incremental = 
     (SELECT INCREMENTAL 
      FROM INCREMENTAL_TABLE 
      WHERE GTIN = @gint AND 
       PRESENTATION = @pres AND 
       LEVEL = @level) 

    -- 
    with Numbers as 
    (
     select row_number() over(order by 1/0) as N 
     from sys.all_objects as o1 cross join 
      sys.all_objects as o2 
    ) 
    SET @xml = (
    select @gint as GINT, 
      @pres as PRESENTATION, 
      @level as LEVEL, 
      N + @current_incremental as INCREMENTAL 
    from Numbers 
    where N < @quantity 
    for xml path('row'), root('root'), type) 

    SET @xmlGenerated = @xml 
GO 

Там есть проблема с этим фрагментом кода:

SET @xml = (
    select @gint as GINT, 
      @pres as PRESENTATION, 
      @level as LEVEL, 
      N + @current_incremental as INCREMENTAL 
    from Numbers 
    where N < @quantity 
    for xml path('row'), root('root'), type) 

у меня есть эти три ошибки:

Incorrect syntax near SET. 
Column name N not valid. 
Object name 'Numbers' not valid. 

ответ

5

Вам нужно заменить SET с SELECT на d он будет работать

так это

SET @xml = (

должны быть заменены с

SELECT @xml = (
Смежные вопросы