专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sql批量删除:SQL Server 2008批量删除和批量更新方法 »正文

sql批量删除:SQL Server 2008批量删除和批量更新方法

来源: 发布时间:星期四, 2009年2月12日 浏览:114次 评论:0


  XMLSQL自定义split和CLR实现split这几种都比较烦人代码很多维护麻烦很不爽

  现在SQL Server2008新增个功能我也不知道中文名如何翻译暂且叫他表参数吧

  大家可以看看举例:

  这个就是用户定义表类型:



  然后给他定义个类型:

Code
  --
  --CreateUser-dTableType
  --
  USETest
  GO
  --Createthedatatype
  CREATETYPEdbo.MyTypeASTABLE
  (
  col1NOTNULL,
  col2varchar(20)NULL,
  col3datetimeNULL,
  PRIMARYKEY(col1)
  )
  GO



  可以看到生成表类型组成情况并且居然可以给表类型建立索引呵呵






  这个是操作 表类型脚本:

Code
  DECLARE @MyTable MyType
  INSERT INTO @MyTable(col1,col2,col3)
  VALUES (1,'abc','1/1/2000'),
  (2,'def','1/1/2001'),
  (3,'ghi','1/1/2002'),
  (4,'jkl','1/1/2003'),
  (5,'mno','1/1/2004')
  SELECT * FROM @MyTable


  下面演示如何将表参数作为个存储过程参数传递以及ADO.NET代码


  sql部分:

Code
  USE[Test]
  GO
  CREATETABLE[dbo].[MyTable](
  [col1][]NOTNULLPRIMARYKEY,
  [col2][varchar](20)NULL,
  [col3][datetime]NULL,
  [UserID][varchar](20)NOTNULL
  )
  GO
  CREATEPROCusp_AddRowsToMyTable@MyTableParamMyTypeREADONLY,
  @UserIDvarchar(20)AS
  INSERTINTOMyTable([col1],[col2],[col3],[UserID])
  SELECT[col1],[col2],[col3],@UserID
  FROM@MyTableParam
  GO



  如何在sql中此存储过程:

Code
  DECLARE@MyTableMyType
  INSERTINTO@MyTable(col1,col2,col3)
  VALUES(1,'abc','1/1/2000'),
  (2,'def','1/1/2001'),
  (3,'ghi','1/1/2002'),
  (4,'jkl','1/1/2003'),
  (5,'mno','1/1/2004')
  EXECusp_AddRowsToMyTable@MyTableParam=@MyTable,@UserID='Kathi'
  SELECT*FROMMyTable



  其中还涉及到个权限问题需要执行以下代码:

Code
  GRANTEXECUTEONTYPE::dbo.MyTypeTOTestUser;



  从.net app那此存储过程:

Code
  'Createalocaltable
  DimtableAsNewDataTable("temp")
  Dimcol1AsNewDataColumn("col1",.Type.GetType(".Int32"))
  Dimcol2AsNewDataColumn("col2",.Type.GetType(".String"))
  Dimcol3AsNewDataColumn("col3",.Type.GetType(".DateTime"))
  table.Columns.Add(col1)
  table.Columns.Add(col2)
  table.Columns.Add(col3)
  'Populatethetable
  ForiAsInteger=20To30
  Dimvals(2)AsObject
  vals(0)=i
  vals(1)=Chr(i+90)
  vals(2)=.DateTime.Now
  table.Rows.Add(vals)
  Next



Code
  'Createacommandobjectthatcallsthestoredproc
  DimcommandAsNewSqlCommand("usp_AddRowsToMyTable",conn)
  command.CommandType=CommandType.StoredProcedure
  'Createaparameterusingthetype
  DimparamAsSqlParameter=command.Parameters.Add("@MyTableParam",SqlDbType.Structured)
  command.Parameters.AddWithValue("@UserID","Kathi")



Code
  'Setthevalueoftheparameter
  param.Value=table
  'Executethequery
  command.ExecuteNonQuery





标签:sql批量删除
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: