SQL新玩法-创建数据类型

此文将使用mssql创建类型完成 Datatable 导入进数据库


1 创建一个数据库表类型type

  create type tableTest as Table(a varchar(30),b varchar(100))

以上将创建一个类型名为tableTest 作为表类型,包含列 a 和列b
类型创建完后,可以在sql管理器中的类型看见,如下图所示:


2 存储过程调用此类型

  

 新建存储过程

create proc pr_testTableType
@keyId varchar(36),
@tableInfo tableTest readOnly --- 自定义表类型必须使用readonLy

as
begin

print @keyId

create table #t
(keyId int identity,a varchar(200),b varchar(200))

insert into #t
(a,b)
select  a,b from @tableInfo t


select * from #t 



truncate table #t
drop table #t 


end


存储过程测试


declare @t tableTest
insert into @t(a,b)values(‘info1′,’test1’)
insert into @t(a,b)values(‘info2′,’test2′)

EXEC [dbo].[pr_testTableType]
@keyId = N’B958203E-3B16-4E5D-80EA-86D8A0F35AD2’,
@tableInfo = @t


3 c#代码应用此类型

           DataTable tb = new DataTable();
            DataColumn a = new DataColumn("a");
            DataColumn b = new DataColumn("b");
            tb.Columns.Add(a);tb.Columns.Add(b);

            DataRow r1 =tb.NewRow();
            r1["a"] ="测试1----";
            r1["b"] ="测试2";
            
            tb.Rows.Add(r1);

            
             
             db.ExecProcReDataTable("pr_testTableType",new object[]{"传送表参数22 ",tb});