[英]Insert multiple records using stored procedure
我有兩張桌子
emplyoee (first table)
id primary key auto increment
emp_name varchar
student(second table)
id foriegnkey emplyoee.id
st_name varchar
我想為一個employeeid
插入多個學生記錄。 我的代碼附在此處,但這僅用於一個學生記錄更新。 如何為此需求編寫存儲過程。 我是SQL服務器和存儲過程的新手。
請你幫助我好嗎?
create procedure empst_Sp
@emp_name varchar(50),
@st_name varchar(50)
as
begin
insert into emplyoee (emp_name) values (@emp_name)
insert into student(id,st_name) values(SCOPE_IDENTITY(),@st_name)
end
對於您的情況,您可以嘗試上面的代碼(我使用的是XML參數類型)
CREATE PROCEDURE EmployeeIns
@EmployeeName NVARCHAR(50),
@Students XML
AS
/*
@Students : <Students>
<Student Name='Studen 1'/>
<Student Name='Studen 1'/>
</Students>
*/
BEGIN
DECLARE @StudenTable TABLE(Name NVARCHAR(50))
DECLARE @EmployeeId INT
INSERT INTO @StudenTable
SELECT Tbl.Col.value('@Name', 'NVARCHAR(50)')
FROM @Students.nodes('//Student') Tbl(Col)
INSERT INTO Emplyoee VALUES(@EmployeeName)
SET @EmployeeId = SCOPE_IDENTITY()
INSERT INTO Student
SELECT @EmployeeId, Name FROM @StudenTable
END
更新1:您的表格設計應如下所示:
CREATE TABLE [dbo].[Emplyoee](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](150) NULL,
CONSTRAINT [PK_Emplyoee] PRIMARY KEY CLUSTERED
(
[Id] ASC
))
CREATE TABLE [dbo].[Student](
[EmployeeId] [int] NULL,
[Name] [nvarchar](150) NULL,
[Id] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[Id] ASC
))
執行代碼:
EXEC EmployeeIns @EmployeeName='trungtin1710', @Students = '<Students><Student Name="Studen 1"/><Student Name="Studen 1"/></Students>'
據我了解:如果帶有@emp_name的emplyoee已經存在,那么插入帶有emplyoee ID的學生記錄,如果沒有任何帶有@emp_name的emplyoee,則需要插入新的emplyoee和具有新emplyoee的ID的學生。 是?
CREATE PROCEDURE empst_Sp
@emp_name varchar(50),
@st_name varchar(50)
AS
BEGIN
DECLARE @EmplyoeeId int
SET @EmplyoeeId = NULL
select @EmplyoeeId = id
from emplyoee
where emp_name = @emp_name
IF @EmplyoeeId IS NULL
BEGIN
insert into emplyoee (emp_name) values (@emp_name)
SET @EmplyoeeId = SCOPE_IDENTITY()
END
insert into student(id, st_name) values(@EmplyoeeId, @st_name)
END
您只需要一個local variable
,您可以在其中設置從Scope_Identity檢索的值: -
CREATE PROCEDURE empst_Sp
@emp_name varchar(50),
@st_name varchar(50)
AS
BEGIN
DECLARE @id INT
INSERT INTO emplyoee (emp_name) VALUES (@emp_name)
set @id = SCOPE_IDENTITY()
INSERT INTO student(id,st_name) VALUES (@id,@st_name)
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.