2013-02-18 72 views
0

我想循环把数据放到@tbl表的@ tbl2表中。不幸的是,我不知道我必须插入什么(INSERT INTO @ tbl2 Values(@ID,?,?))我的意思是第二个和第三个参数。过程分页GridView

MSSQL 2008 R2

例如(表@tbl):

规范ID | SP

3 | '2008年5月1日8:30:52'

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

9 | “2008年5月1日上午08时30分五十二秒”

和如果@count = 3我想借此数据(9 |“2008年5月1日上午08时30分五十二秒”)

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 2013-02-18 09:00:31

+1

我会撒谎把数据从tbl到tbl2 INSERT INTO tbl2值(ID,SpecId,SP) – 2013-02-18 09:02:38

回答

1

你几乎在那里...看看这个:

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 INT后来在循环创建简单的选择对于这两参数:

DECLARE @tbl表 ( 规范ID BIGINT, SP DATETIME )