mssql2008 自界說表類型完成(批量拔出或許修正)。本站提示廣大學習愛好者:(mssql2008 自界說表類型完成(批量拔出或許修正))文章只能為提供參考,不一定能成為您想要的結果。以下是mssql2008 自界說表類型完成(批量拔出或許修正)正文
在做年夜型網站或許體系的時刻,常常會碰到個成績就是批量拔出或許修正數據庫。假如碰到這個成績,照樣一條筆記錄來處置,如許的效力太低了,所以要斟酌批量拔出或許修正
明天這邊不講SqlBulkCopy,只簡略講sql自界說表類型。由於今朝的項目我用到了分表的方法,用存儲進程比擬便利主動創立分表。如今把我今朝寫的功效簡略做個記載,也便利今後本身查閱
第一步,在數據庫裡點擊 新建查詢 創立響應的sql
--======自界說表類型Demo======
--創立表
create table tab
(
tabvalue varchar(10)
)
go
--創立自界說表類型
create type Type_tab as table
(
Type_tabvalue varchar(10)
)
go
--創立 存儲進程
create procedure p_Tab
(
@ptab Type_tab readonly
)
as
begin
insert into tab select * from @ptab
end
--sql 測試表類型 type1
declare @tt Type_tab
insert into @tt values('a')
insert into @tt values('b')
insert into @tt values('c')
insert into tab select * from @tt
select * from tab
--sql 測試表類型 type2
declare @tt2 Type_tab
insert into @tt2 values('a')
insert into @tt2 values('b')
insert into @tt2 values('c')
execute p_Tab @tt2
第二步 asp.net 挪用 存儲進程
using (SqlConnection conn =SqlHelper.Settings.GetSqlConnection(true))
{
try
{
DataTable DtAdd = new DataTable();
DtAdd.Columns.Add("tabvalue");
DtAdd.Columns["tabvalue"].DataType = System.Type.GetType("System.String");
foreach (ModelEnt rl in List)
{
DataRow Dr = DtAdd.NewRow();
Dr["tabvalue"] = rl.tabvalue;
DtAdd.Rows.Add(Dr);
}
//int Rt = SqlHelper.SqlHelper.SqlBulkCopy(DtAdd, TableName, conn);
SqlCommand cmd = new SqlCommand("p_Tab", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ptab", SqlDbType.Structured).Value =DtAdd;
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
#if DEBUG
throw ex;
#else
return -10000;
#endif
}
finally
{
conn.Close();
}
ModelEnt 是tab表對應的實體類。list 是ModelEnt 的一個聚集,如許可以完成多個row,如許就可以一次拔出多筆記錄。