сохранить переменную SQL из столбца результата запроса FROM предложения INSERT - PullRequest
0 голосов
/ 02 августа 2011

Это, вероятно, тривиально для большинства из вас, но я не пишу хранимые процедуры очень долго (только 6 месяцев).Я хотел бы иметь возможность установить переменную @testid на основе одного из столбцов, используемых для запроса INSERT.Как я могу это сделать?

DECLARE @testid INT;

INSERT INTO [exporttestresultreport] (
    [testid],
    [othercolumn]
) 
SELECT
    [testid],  -- <======= how can I set my variable based on this column?
    [othercolumn]
FROM 
    [exporttestresultreport] e
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid

Ответы [ 2 ]

3 голосов
/ 02 августа 2011
DECLARE @testid INT;

DECLARE @test TABLE (testid int);

INSERT INTO [exporttestresultreport] (
    [testid],
    [othercolumn]
) 
OUTPUT INSERTED.testID INTO @test
SELECT
    [testid],  -- <======= how can I set my variable based on this column?
    [othercolumn]
FROM 
    [exporttestresultreport] e
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid;

SELECT @testid = testid FROM @test;

INSERT..SELECT .. по своей природе является многорядным, поэтому он не делает семиз, чтобы разрешить присваивать значение скалярной переменной: какую строку следует использовать для значения?

1 голос
/ 02 августа 2011
DECLARE @testid INT;

DECLARE @t TABLE(t INT);

INSERT exporttestresultreport
(
    testid, othercolumn
)
OUTPUT INSERTED.testid INTO @t
SELECT testid, othercolumn 
FROM 
    [exporttestresultreport] e
WHERE 
    [exporttestresultreportid] = @exporttestresultreportid;

SELECT @testid = t FROM @t;

-- not sure what you want to do if there are multiple rows in the insert
...