1 使用表参数 
 2  表变量(Table Parameters)可以将整个表数据汇集成一个参数传递给存储过程或SQL语句。它的注意性能开销是将数据汇集成参数(O(数据量))。 
 3 定义了一个表参数jk_users_bulk_insert
 4 
 5 CREATE TYPE jk_users_bulk_insert AS TABLE ( 
 6 user_login varchar(60), 
 7 user_pass varchar(64), 
 8 user_nicename varchar(50), 
 9 user_email varchar(100), 
10 user_url varchar(100), 
11 user_activation_key varchar(60), 
12 user_status int, 
13 display_name varchar(250) 
14 ) 
15  定义一个存储过程接受表参数jk_users_bulk_insert  
16 
17   
18 CREATE PROCEDURE sp_insert_jk_users 
19 @usersTable jk_users_bulk_insert READONLY 
20 AS 
21 
22 INSERT INTO jk_users (user_login, user_pass, user_nicename, user_email, user_url, 
23 user_activation_key, user_status, display_name, user_registered) 
24 
25 SELECT user_login, user_pass, user_nicename, user_email, user_url, 
26 user_activation_key, user_status, display_name, GETDATE() 
27 FROM @usersTable
28 
29  客户端代码中,调用存储过程并且将表作为参数方式传递给存储过程。 
30 
31  
32 var sw = Stopwatch.StartNew(); 
33 using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONN2"].ToString())) 
34 { 
35 conn.Open(); 
36 //// Invokes the stored procedure. 
37 using (var cmd = new SqlCommand("sp_insert_jk_users", conn)) 
38 { 
39 cmd.CommandType = CommandType.StoredProcedure; 
40 
41 //// Adding a "structured" parameter allows you to insert tons of data with low overhead 
42 var param = new SqlParameter("@userTable", SqlDbType.Structured) { Value = dt }; 
43 cmd.Parameters.Add(param); 
44 cmd.ExecuteNonQuery(); 
45 } 
46 } 
47 sw.Stop();  

 

相关文章:

  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2021-08-21
  • 2022-02-18
  • 2021-10-14
  • 2022-12-23
猜你喜欢
  • 2021-06-11
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2022-01-02
  • 2021-12-31
相关资源
相似解决方案