如何将数据表作为输入参数从C#传递到SQL Server 2000中的存储过程

时间:2015-04-27 11:17:32

标签: sql asp.net sql-server sql-server-2000

我将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不支持用户定义的表类型。

有没有其他方法可以做到这一点?

0 个答案:

没有答案