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 0
相关文章读者评论发表评论 |
|