我将DataTable
作为输入参数从C#传递给存储过程。为此,我创建了名为EmpType
的用户定义表类型。
DataTable
包含列id,Name,Lname,Mobileno,EmpId。
员工表包含[名称],[Lname],[mobno],[已]列。我想将数据表中的记录插入到尚未存在的Employee表中。
这是我的SQL代码:
CREATE TYPE [dbo].[EmpType] AS TABLE
(
[Name] [varchar](50) NULL,
[Lname] [varchar](10) NULL,
[MobileNo] [varchar](50) NULL,
[EmpId] [int] NULL
)
Create Procedure Proc_InsertEmpDetails
@tblEmp EmpType READONLY,
@DId int
as
begin
INSERT INTO Employee ([Name], [Lname], [mobno], [Did])
SELECT
[Name], [Lname], [mobno] @DId
FROM
@tblEmp A
INNER JOIN
(SELECT MIN(Id) AS minID, mobno
FROM @tblEmp
GROUP BY mobno) MinIDTbl ON MinIDTbl.minID = A.ExcelId
WHERE
NOT EXISTS (SELECT 1
FROM Employee B
WHERE B.[mobno] = A.[mobno]
AND B.[Did] = @DId)
end
工作正常。我使用的是SQL Server 2012.但我的开发服务器是SQL Server 2000.SQL Server 2000不支持用户定义的表类型。
有没有其他方法可以做到这一点?