如何在不使用循环的情况下将多个数据插入mssql? 我正在开发一个诊所管理系统,而医生可能会给病人提供少量药物,因此我希望在我的数据库中,数据看起来像
|-----------------------------------|
| RecordID | ItemID | Amount|
|-----------------------------------|
| 1 | 1 | 10 |
| 1 | 2 | 100 |
--------------------------------------
现在我得到的是......
|-----------------------------------|
| RecordID | ItemID | Amount|
|-----------------------------------|
| 1 | 1 | 10 |
| 2 | 2 | 100 |
--------------------------------------
因为我正在使用存储过程并需要循环将所有“ItemID”存储到sql中。
+------------+ +-----------------+
| record | | record_items |
+------------+ +-----------------+
|RecordID(PK)| > | RecordID (FK) |
|PatientID | | ItemID |
|Precription | | Amount |
|VisitDate | +-----------------+
+------------+
这是我的2个表,我希望在存储数据时,recordID不会根据插入的ItemID数量而增加。
ALTER PROCEDURE [dbo].[InsertPatientRecord]
-- Add the parameters for the stored procedure here
@PatientID INT,
@Prescription VARCHAR(50),
@VisitDate DATETIME,
@ItemID INT,
@Amount INT
AS
SET NOCOUNT On
DECLARE @RecordID INT
INSERT INTO record VALUES(@PatientID,@Prescription,@VisitDate)
SET @RecordID=Scope_Identity()
INSERT INTO record_item VALUES(@RecordID,@ItemID,@Amount)
RETURN
这是我的存储过程
答案 0 :(得分:1)
由于每个record_items
可能有多个record
,因此您需要有两个存储过程:一个用于编写record
(一次),另一个用于编写每个record_items
record
1}}与记录相关联。
为了使这项工作正常,在编写recordid
之后,您需要检索record_items
,以便将其传递给record
的存储过程。
以下是存储过程的概要;剩下的工作我会留给你。
一个注意事项:RecordId返回给调用者,因为它是一个输出参数。这意味着您需要使用命令执行此过程(无论如何都应该执行此操作),并且需要在执行存储过程后检索此参数的值。
这是ALTER PROCEDURE [dbo].[InsertPatientRecord]
@RecordId INT OUTPUT ,
@PatientID INT,
@Prescription VARCHAR(50),
@VisitDate DATETIME
AS
INSERT INTO record VALUES(@PatientID,@Prescription,@VisitDate)
SET @RecordID=Scope_Identity()
sp:
record_items
这里是ALTER PROCEDURE [dbo].[InsertPatientRecordItem]
@RecordID INT,
@ItemID INT,
@Amount INT
AS
INSERT INTO record_item VALUES(@RecordID,@ItemID,@Amount)
sp:
{{1}}
答案 1 :(得分:0)