交易 sql - 不能 select 来自变量

transact sql - can't select from variable

我正在尝试获取插入 TABLE A 的新记录的 ID,并在后续插入中使用它。

但我收到一条错误消息,指出未声明 newUserId 变量。 它实际上是一个 table 变量。

代码如下所示;

USE Acme;
GO
DECLARE     @userPrincipalName VARCHAR(100),
            @displayName VARCHAR(100),
            @domainName VARCHAR(100),
            @tId INT,
            @uname VARCHAR(100);
DECLARE     @newUserid TABLE (
            id INT
            );
    
-- FILL ME IN
SET @domainName = 'mydomain.org';
SET @userPrincipalName = 'ppan@mydomain.org';
SET @displayName = 'Pan, Peter';
SET @tId=4;
SET @uname = 'ppan';

INSERT INTO dbo.User
            (column list)
OUTPUT Inserted.ID INTO @newUserId

SELECT '', @domainName, getutcdate(), @userPrincipalName, @displayName, other fields

-- Create New Profile Using NewID ** THIS IS WHERE IT DIES
INSERT INTO dbo.UserProfile
    SELECT @newUserId.id, 
    '{}', GETDATE(), getdate(), ''
    

具体错误为:

8:55:51 AMStarted executing query at Line 1
Commands completed successfully.
8:55:51 AMStarted executing query at Line 3
Msg 137, Level 16, State 1, Line 36
Must declare the scalar variable "@newUserid".
Total execution time: 00:00:00.017

为了这个目的我简化了代码 post 但第 36 行是我引用的地方 SELECT @newUserId.id

如有任何提示,我们将不胜感激。

谢谢

因为 @newUserId 是一个 table 变量你不能 select 它作为一个变量。

你可以试试INSERT INTO ....SELECT ... FROM

INSERT INTO dbo.UserProfile
SELECT id, '{}', GETDATE(), GETDATE(), ''
FROM @newUserId