2013-02-18 4 views
0

Я хотел бы в цикле помещать данные в таблицу @ tbl2 из таблицы @tbl. К сожалению, я не знаю, что мне нужно вставить (INSERT INTO @ tbl2 Values ​​(@ID,?,?)) Я имею в виду второй и третий параметр.Процедура Пейджинг для GridView

MSSQL 2008 R2

Для примера (таблица @tbl):

SpecId | SP

3 | '01.05.2008 8:30:52 AM'

8 | '01.05.2008 8:30:52 AM'

9 | '5/1/2008 8:30:52 AM'

и если @count = 3 Я хотел бы принять эти данные (9 | '5/1/2008 8:30:52 AM')

DECLARE @tbl TABLE 
(
    SpecId BIGINT, 
    SP DATETIME 
) 
DECLARE @tbl2 TABLE 
(
    ID int, 
    SpecId BIGINT, 
    SP DATETIME 
) 
DECLARE @ID INT 
DECLARE @count INT 
DECLARE @firstNumber INT 
DECLARE @secondNumber INT 
SET @firstNumber = @PageSize * 10 
SET @secondNumber = @firstNumber - 10 

WHILE (@count <= @TotalRowsNumber) 

BEGIN 

    IF @count > @secondNumber and @count <= @firstNumber 
    BEGIN 
     SET @ID +=1 
     INSERT INTO @tbl2 Values(@ID,?,?) 
    END 


    SET @count = (@count + 1) 

END 
+0

Я не понимаю. Что ты пытаешься сделать? Какие выходные данные вы хотите? С каким вкладом? – Arion

+1

Я хотел бы положить данные с tbl на tbl2 INSERT INTO tbl2 Значения (ID, SpecId, SP) –

ответ

1

You почти там ... Посмотрите на этот:

DECLARE @tbl TABLE 
(
    Id int identity(1, 1), 
    SpecId BIGINT, 
    SP DATETIME 
) 
DECLARE @tbl2 TABLE 
(
    ID int, 
    SpecId BIGINT, 
    SP DATETIME 
) 
DECLARE @ID INT 
DECLARE @count INT 
DECLARE @firstNumber INT 
DECLARE @secondNumber INT 
declare @PageSize int 
declare @TotalRowsNumber int 

SET @firstNumber = @PageSize * 10 
SET @secondNumber = @firstNumber - 10 

-- Populate tbl 
insert 
into @tbl 
select value1, value2 
from original_table 

set @TotalRowsNumber = @@rowcount 
set @count = 1 

WHILE (@count <= @TotalRowsNumber) 

BEGIN 

    select @value1 = value1 
     , @value2 = value2 
    from @tbl 
    where Id = @count 

    IF @count > @secondNumber and @count <= @firstNumber 
    BEGIN 
     SET @ID +=1 
     INSERT INTO @tbl2 Values(@ID,@value1,@value2) 
    END 


    SET @count = (@count + 1) 

END 

Что я сделал. @tbl должен получить дополнительный столбец, называемый Id. Это столбец идентификации, который можно использовать для ссылки на более позднем стадионе. Затем вы заполняете @tbl исходными значениями. В цикле while вы получаете значения @tbl в некоторые переменные (благодаря @count = id, который вы перебираете по записям), и вы вставляете их в @ tbl2

1

Исправлено.

Я добавил к этой таблице ID междунар, а затем в цикле я создаю простой выбор для этого два параметра:

DECLARE @tbl ТАБЛИЦА ( SpecId BIGINT, SP DATETIME )

Смежные вопросы