gpt4 book ai didi

SQL Server 2008 使用 WHILE 循环插入

转载 作者:行者123 更新时间:2023-12-02 16:57:43 26 4
gpt4 key购买 nike

我有类似的现有记录

ID    Hospital ID     Email                Description 
1 15 abc@e.com Sample Description
2 15 def@dd.com Random Text

我需要使用 WHILE 循环来插入医院 ID 更改为特定值或在本例中为 32 的行,而其他值(不是自动生成的 ID)保持不变。

它应该看起来像

ID    Hospital ID     Email                Description 
1 15 abc@e.com Sample Description
2 15 def@dd.com Random Text
3 32 abc@e.com Sample Description
4 32 def@dd.com Random Text

请注意,上面现在有两个新行,其 ID 和医院 ID 不同。 ID是自动生成的。

我有几个表需要进行相同的更新。如果我可以用 while 循环来做到这一点,我不想使用光标。

编辑已接受的答案中提供了放弃 while 循环作为更简单的解决方案。

最佳答案

首先,我想说我 100% 同意 John Saunders 的观​​点,即在大多数情况下,尤其是在生产中,必须避免 SQL 中的循环。

但偶尔为了测试目的而一次性在表中填充一百条记录,恕我直言,放纵自己使用循环是可以的。

例如,在您的情况下,用医院 ID 介于 16 到 100 之间的记录填充您的表,并使电子邮件和描述清晰可见,您可以使用

CREATE PROCEDURE populateHospitals
AS
DECLARE @hid INT;
SET @hid=16;
WHILE @hid < 100
BEGIN
INSERT hospitals ([Hospital ID], Email, Description)
VALUES(@hid, 'user' + LTRIM(STR(@hid)) + '@mail.com', 'Sample Description' + LTRIM(STR(@hid)));
SET @hid = @hid + 1;
END

结果是

ID   Hospital ID Email            Description          
---- ----------- ---------------- ---------------------
1 16 user16@mail.com Sample Description16
2 17 user17@mail.com Sample Description17
...
84 99 user99@mail.com Sample Description99

关于SQL Server 2008 使用 WHILE 循环插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com