【发布时间】:2018-08-02 02:10:56
【问题描述】:
在我的存储过程中,我有一个 select 语句,它将返回多行结果。我想将这些结果插入到另一个表中。 当我运行存储过程时,select 语句返回了两行结果,但它只将一行结果而不是两行插入到 sendemail 表中。 有人可以帮忙吗?谢谢
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@newid int,
@Name nvarchar (50),
@Email nvarchar(50),
@ExpiryDate varchar(50)
SET @newid = 0
--Get results
SELECT @newid = b.[Id]
, @Name = c.[Name]
, @Email = b.[Email]
, @ExpiryDate = a.AccountExpiryDate
FROM Account a
LEFT JOIN Customer b ON c.[Id] = a.[CustomerId]
LEFT JOIN VIP c on c.[Id] = b.[VIPId]
WHERE a.[AccountExpiryDate] Between Cast(GETDATE() AS DATE) AND CAST(DATEADD(d, 30, GETDATE()) AS DATE)
--Insert into send email table if return results
IF(@newid > 0)
BEGIN
INSERT INTO [dbo].[SendEmail]
VALUES (
5
,'test@hotmail.com'
,'Test'
,@Email
,@Name
,NULL
,NULL
,''
,NULL
,'Test Email'
,'<p>
Hi ' + @Name + ',<br /><br />
Your account will be expired on ' + @ExpiryDate + '.
</p>'
,NULL
,NULL
,0
,GETUTCDATE()
,NULL
,1
,NULL
,1)
END
END
【问题讨论】:
-
你只有一个插入,所以只有一行。您想查看“INSERT INTO...SELECT...”表单。这将从选择的结果中插入。 w3schools.com/sql/sql_insert_into_select.asp 尝试一下,如果需要,可以询问更具体的语法问题。
-
好的。它现在正在工作。谢谢@asantaballa
标签: sql sql-server stored-procedures