表变量

1.

USE AdventureWorks2012;
GO
--1
DECLARE @IDTable TABLE (ID INT);
DECLARE @IDList VARCHAR(2000);
DECLARE @ID INT;
DECLARE @Loc INT;
--2
SET @IDList = '16496,12506,11390,10798,2191,11235,10879,15040,3086';
--3
SET @Loc = CHARINDEX(',',@IDList);
PRINT @Loc
--4
 WHILE @Loc > 0 BEGIN
    --4.1
    SET @ID = LEFT(@IDList,@Loc-1);
    --4.2
    SET @IDList = SUBSTRING(@IDList,@Loc +1,2000);
    --4.3
    INSERT INTO @IDTable(ID)
    VALUES (@ID);
    --4.4
    SET @Loc = CHARINDEX(',',@IDList);
END;
--5
IF LEN(@IDList) > 0 BEGIN
SET @ID = @IDList;
INSERT INTO @IDTable(ID)
VALUES (@ID);
END;
--6
SELECT BusinessEntityID, FirstName, LastName
FROM Person.Person AS p
INNER JOIN @IDTable ON p.BusinessEntityID = ID;

 

2。类似于数组的用法:

USE AdventureWorks2012;
GO
--1
SET NOCOUNT ON;
GO
--2
DECLARE @IDTable TABLE
(
    ArrayIndex INT NOT NULL IDENTITY,
    ID INT
);
DECLARE @RowCount INT;
DECLARE @ID INT;
DECLARE @Count INT = 1;
--3
INSERT INTO @IDTable(ID)
VALUES(500),(333),(200),(999);
--4
SELECT @RowCount = COUNT(*)
FROM @IDTable;
--5
WHILE @Count <= @RowCount 
BEGIN
    --5.1
    SELECT @ID = ID
    FROM @IDTable
    WHERE ArrayIndex = @Count;
    --5.2
    PRINT CAST(@COUNT AS VARCHAR) + ': ' + CAST(@ID AS VARCHAR);
    --5.3
    SET @Count += 1;
END;

 

posted @ 2015-05-31 16:03  我在赫尔辛基火车站  阅读(129)  评论(0编辑  收藏  举报