Skip to content Skip to sidebar Skip to footer

Store Query Result In Variable

I have declared 6 variables in a stored procedure and I'd like to store a query result (which may bring up to 6 records) into each one of those variables. My query looks like this:

Solution 1:

You could insert the SKU's into a table variable, with an identity column. Then set the variables equal to the sku in the table based on the identity columns value.

DECLARE@Sib1VARCHAR(20)
    ,@Sib2VARCHAR(20)
    ,@Sib3VARCHAR(20)
    ,@Sib4VARCHAR(20)
    ,@Sib5VARCHAR(20)
    ,@Sib6VARCHAR(20);

DECLARE@TempTblTABLE (
    RowID INTIDENTITY
    ,SKU VARCHAR(20)
    )

INSERTINTO@TempTbl (SKU)
select
    PC.SKU
from
    Product PC
    where
        Parent_code in (select
                                  Parent_code
                              from
                                  Product 
                              where
                                  SKU =12345)
        and ParentFlag <>'p'and SKU <>12345orderby Parent_Child_Priority descSELECT@Sib1= SKU
FROM@TempTblWHERE RowID =1;

SELECT@Sib2= SKU
FROM@TempTblWHERE RowID =2;

SELECT@Sib3= SKU
FROM@TempTblWHERE RowID =3;

SELECT@Sib4= SKU
FROM@TempTblWHERE RowID =4;

SELECT@Sib5= SKU
FROM@TempTblWHERE RowID =5;

SELECT@Sib6= SKU
FROM@TempTblWHERE RowID =6;

EDIT

DECLARE@SQLVARCHAR(MAX);

SET@SQL='SELECT SKU, ..., sum(convert(INT, a.qty)) AS '+@sib1+' FROM ...'EXEC (@SQL);

Solution 2:

Rather use a table variable like

DECLARE@MyTableVartable(
    SKU intNOTNULL);

Then insert into it

insertinto@MyTableVar(SKU)
select
    PC.SKU
from
    Product PC
    where
        Parent_code in (select
                                  Parent_code
                              from
                                  Product 
                              where
                                  SKU =12345)
        and ParentFlag <>'p'and SKU <>12345orderby Parent_Child_Priority desc;

Now you can use that @MyTableVar as you need. You don't need to declare N variable for N records.

Post a Comment for "Store Query Result In Variable"