插入表时使用exec()函数

时间:2013-07-03 12:33:50

标签: sql-server insert

如果你有2张这样的表格

CREATE TABLE #BranchType
(
    [External_BranchTypeID] [uniqueidentifier] DEFAULT newsequentialid()  NOT NULL,
    [BranchTypeID] [smallint] identity(1,1) ,
    [BranchTypeDescription] [nvarchar](20) NOT NULL,
    [DateCreated] [datetime] NOT NULL,
    [UserCreated] [nvarchar](20) NOT NULL,
    [DateModified] [datetime] NULL,
    [UserModified] [nvarchar](20) NULL,
    [IsDeleted] [bit] NOT NULL,
)

CREATE TABLE BranchSubType
(
    [External_BranchSubTypeID] [uniqueidentifier] DEFAULT newsequentialid()  NOT NULL,
    [BranchSubTypeID] [smallint] identity(1,1) ,
    [BranchTypeID] [uniqueidentifier] NOT NULL,
    [BranchSubTypeDescription] [nvarchar](30) NOT NULL,
    [FinancialSystemTypeId] [smallint] NOT NULL,
    [DateCreated] [datetime] NOT NULL,
    [UserCreated] [nvarchar](20) NOT NULL,
    [DateModified] [datetime] NULL,
    [UserModified] [nvarchar](20) NULL,
    [IsDeleted] [bit] NOT NULL,
)

如何在SQL Server中执行如下所示的插入?我正在尝试返回guid值

DECLARE @SQLCmd VARCHAR(max)
set @SQLCmd = 'SELECT External_BranchTypeID FROM   #BranchType WHERE BranchTypeID =1'

INSERT INTO BranchSubType (BranchTypeID, BranchSubTypeDescription, BranchSubTypeId,  DateCreated, UserCreated,IsDeleted) 
VALUES ( exec(@SQLCmd), 'Normal',1, getdate(), 'System',0) --FROM   #BranchType A WHERE A.BranchTypeID = 1

1 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要使用EXEC

INSERT INTO BranchSubType 
    (BranchTypeID, 
     BranchSubTypeDescription, 
     BranchSubTypeId,  
     DateCreated, 
     UserCreated,
     IsDeleted) 
SELECT External_BranchTypeID,
       'Normal',
        1, 
        getdate(), 
        'System',
        0  
 FROM   #BranchType WHERE BranchTypeID =1