CREATETABLE TempUser(
ID INTNOTNULLIDENTITY(1,1) PRIMARYKEY,
NAME NVARCHAR(100),
Age INT
)
INSERT TempUser VALUES(‘a‘,1)
INSERT TempUser VALUES(‘b‘,2)
INSERT TempUser VALUES(‘c‘,3)
2、新建【用户表类型】
CREATE TYPE temp_20190915 ASTABLE
(
ID INT
)
3、新建存储过程
CREATEPROC proc_test_20190915(@temp_20190915 temp_20190915 readonly)
ASBEGINSELECT b.*FROM@temp_20190915 a JOIN TempUser b ON a.ID=b.IDEND
注意事项:存储过程的参数类型是刚刚新建的【用户表类型】并且是只读的
此时在存储过程中我们可以把【用户表类型】当作一张正常表的去处理需要的数据(注意是只读)
4、内存中构建我们的Datatable
var data = new DataTable();
data.Columns.Add("id", typeof(int));var row1 = data.NewRow();
row1["id"] = 1;
data.Rows.Add(row1);
var row2 = data.NewRow();
row2["id"] = 2;
data.Rows.Add(row2);
5、调用存储过程
var p = new System.Data.SqlClient.SqlParameter[1];
p[0] = new System.Data.SqlClient.SqlParameter("@temp_20190915", data);
var data= Comm.Tool.DbHelper.ExecProcDataSet("proc_test_20190915", p, "数据库连接").Tables[0];