0

SQL Server の 2 つのテーブルにデータを挿入するストアド プロシージャを作成しようとしています。

コードのすべての異なる位置に結合を配置しようとしましたが、それでもエラーが発生します。

 CREATE PROCEDURE sp_Insert_Person
 @s_FirstName nvarchar(50),
 @s_Surname nvarchar(50),
 @s_AddressLine1 nvarchar(50),
 @s_AddressLine2 nvarchar(50),
 @s_Postcode nvarchar(10),
 @s_Phone nvarchar(50),
 @s_Department nvarchar(50)
 AS
BEGIN
INSERT INTO 
        tbl_person(FirstName, Surname, AddressLine1, AddressLine2, 
                   Postcode, Phone, tbl_Department.Department)
INNER JOIN tbl_person
ON  tbl_person.DepartmentID = tbl_Department.DepartmentID

VALUES (@s_FirstName,
        @s_Surname,
        @s_AddressLine1,
        @s_AddressLine2,
        @s_Postcode,
        @s_Phone,
        @s_Department)

END

最後に結合を試みましたが、最初は挿入結合をすべて調べましたが、すべて間違っているのではないかと思いました。

DepartmentID部門テーブルと個人テーブルがあり、部門テーブルのPKと同様に、個人テーブルにあるFKを介して部門テーブルにアクセスできると考えました

4

2 に答える 2

1

こんな感じだと思います

INSERT INTO tbl_person
                     (FirstName,
                     Surname, 
                     AddressLine1, 
                     AddressLine2, 
                     Postcode, 
                     Phone, 
                     DepartmentID)
Select @s_FirstName,
        @s_Surname,
        @s_AddressLine1,
        @s_AddressLine2,
        @s_Postcode,
        @s_Phone, 
        tbl_Department.DepartmentID 
from  tbl_person 
join DepartmentID
ON  tbl_person.DepartmentID = tbl_Department.DepartmentID 
where tbl_Department.Department = @s_Department
于 2012-12-09T19:08:11.547 に答える
0
 CREATE PROCEDURE sp_Insert_Person
 @s_FirstName nvarchar(50),
 @s_Surname nvarchar(50),
 @s_AddressLine1 nvarchar(50),
 @s_AddressLine2 nvarchar(50),
 @s_Postcode nvarchar(10),
 @s_Phone nvarchar(50),
 @s_Department nvarchar(50)
 AS
BEGIN
if not Exists(select * from tbl_Department where Department=@s_Department)
   insert into tbl_Department (Department) Values (@s_Department)

INSERT INTO tbl_person
                     (FirstName,
                     Surname, 
                     AddressLine1, 
                     AddressLine2, 
                     Postcode, 
                     Phone, 
                     DepartmentID)

select @s_FirstName,
        @s_Surname,
        @s_AddressLine1,
        @s_AddressLine2,
        @s_Postcode,
        @s_Phone,
        @s_Department,
        DepartmentID 
        from tbl_Department 
        where Department=@s_Department
END
于 2012-12-09T19:10:45.097 に答える