我将datatable作为输入参数传递给存储过程。我为它创建了自定义类型。
这是我的存储过程:
CREATE PROCEDURE [dbo].[Proc_AddEmployee]
@tblEmp EmpType READONLY,
@Code int
AS
BEGIN
INSERT INTO Employee ([Name], [Lname], [Code])
SELECT
[Name], [Lname], @Code
FROM @tblEmp
这里我从datatable获取记录并插入Employee表。 数据表包含Name,Lname和mobileno。 我想检查Name,Lname和mobileno的组合。如果Employee表中存在它的组合,请不要在Employee.Else中插入记录([Name],[Lname],@ Code)插入
答案 0 :(得分:1)
试试这个:
CREATE PROCEDURE [dbo].[Proc_AddEmployee]
@tblEmp EmpType READONLY,
@Code int
AS
BEGIN
INSERT INTO Employee ([Name], [Lname], [Code])
SELECT
[Name], [Lname], @Code
FROM @tblEmp T
where NOT EXISTS (SELECT
[Name], [Lname], @Code
FROM Employee E where T.[Name]=E.[Name], T.[Lname]=E.[Lname] )
END
答案 1 :(得分:1)
将Correlated SubQuery
与NOT EXISTS
一起使用以查找是否存在记录
INSERT INTO Employee
([Name],[Lname],[Code])
SELECT [Name],[Lname],@Code
FROM @tblEmp A
WHERE NOT EXISTS (SELECT 1
FROM Employee B
WHERE B.[Name] = A.[Name]
AND B.[Lname] = A.[Lname]
AND B.[mobno] = A.[mobno])
答案 2 :(得分:1)
试试这个:
INSERT INTO Employee
([Name],
[Lname],
[Code])
SELECT [Name],
[Lname],
@Code
FROM @tblEmp t1
WHERE NOT EXISTS (SELECT 1
FROM Employee t2
WHERE t1.[Name] = t2.[Name]
AND t1.[Lname] = t2.[Lname]
AND t1.[mobileno] = t1.[mobileno])
答案 3 :(得分:1)
我在SQL方面不擅长,但这种方式可以正常工作
CREATE PROCEDURE [dbo].[Proc_AddEmployee]
@tblEmp EmpType READONLY,
@Code int
AS
BEGIN
DECLARE
@EMPID INTEGER
SELECT @EMPID = ISNULL(EMPID, 0) FROM EMPLOYEE
WHERE NAME = @NAME AND LNAME = @LNAME AND MOBILE =@Mobile
IF EMPID = 0 THEN
INSERT INTO Employee ([Name], [Lname], [Code])
SELECT
[Name], [Lname], @Code
FROM @tblEmp
END
END