简体   繁体   中英

How do I assign multiple inline variables in T-SQL?

I am trying to select multiple variables from a subquery in order to use later. Here's my code:

DECLARE @MarketplaceName VARCHAR(50),
    @ProductFieldID INT,
    @FromValue VARCHAR(255) = (
        SELECT mcvm.MarketplaceName,
            mcvm.ProductFieldID,
            mcvm.FromValue
        FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
        WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID
        )

I'm getting the following error message:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

I'm trying to map @MarketplaceName from mcvm.MarketplaceName , etc.

What I would like is to not have to write multiple SELECT statements for each of these variables.

Are you trying to do this?

DECLARE @MarketplaceName VARCHAR(50),
        @ProductFieldID INT,
        @FromValue VARCHAR(255)
SELECT  @MarketplaceName    = mcvm.MarketplaceName,
        @ProductFieldID     = mcvm.ProductFieldID,
        @FromValue          = mcvm.FromValue
FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID

This is how you do it. Also, this isn't a sub-query, it is just a query.

DECLARE @MarketplaceName VARCHAR(50),
        @ProductFieldID INT,
        @FromValue VARCHAR(255)


SELECT @MarketplaceName = mcvm.MarketplaceName,
       @ProductFieldID = mcvm.ProductFieldID,
       @FromValue = mcvm.FromValue
FROM [Meta].[MarketplaceCategoryValueMapping] AS mcvm
WHERE mcvm.MarketplaceCategoryValueMappingID = @MapID

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM