需要将选择的输出存储到mssql中的变量数组

时间:2018-06-27 11:50:33

标签: sql-server

我有一个名为Structure1的表,我想将Structure_name的值存储到数组中,并与具有列Structure2的另一个表item进行比较,并在匹配。

DECLARE  @Structure1  TABLE
    (
        Structure_name VARCHAR[128]
    )
    select Structure_name FROM Structure1
    SELECT COUNT(*) into xyz FROM Structure1 

    FOR i=1..xyz
        SELECT Structure_name FROM Structure2 WHERE ITEM = Structure[i]
    print Structure_name values..
    END FOR 

2 个答案:

答案 0 :(得分:2)

似乎您来自另一种编程语言背景。在大多数(如果不是全部)关系数据库中,您的操作是固定设置的,而不是一个接一个地进行。它们经过优化也可以那样工作。

您可以简单地连接两个表并显示所有匹配的值。

SELECT
    S2.Structure_name
FROM
    Structure2 AS S2
    INNER JOIN Structure1 AS S1 ON S2.Structure_name = S1.Structure_name

编辑:如果您确实要使用循环,则可以使用CURSOR。基本语法如下:

DECLARE StructureCursor CURSOR FOR
    SELECT
        S.Structure_name
    FROM
        Structure2 AS S

OPEN StructureCursor

DECLARE @StructureName VARCHAR(200)

FETCH NEXT FROM StructureCursor INTO @StructureName

WHILE @@FETCH_STATUS = 0
BEGIN

    DECLARE @MatchingStructureName VARCHAR(200)

    SELECT
        @MatchingStructureName = S1.Structure_name
    FROM
        Structure1 AS S1
    WHERE
        S1.Structure_name = @StructureName

    PRINT (@MatchingStructureName)

    FETCH NEXT FROM StructureCursor INTO @StructureName

END

CLOSE StructureCursor
DEALLOCATE StructureCursor

答案 1 :(得分:0)

这就是RDBMS中JOIN的作用

这将给出2个表之间的所有匹配行

if(!mUsername.getText().toString().equals("admin") && !mPassword.getText().toString().equals("admin")){