存储过程返回多个结果集,它在程序中这样做...
2021/8/23 9:28:31
本文主要是介绍存储过程返回多个结果集,它在程序中这样做...,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
面对存储过程返回多个结果集,我们在.NET
应用程序中如何处理呢?
存储过程
脚本如下:
CREATE PROCEDURE PROCEDURENAME AS BEGIN BEGIN IF OBJECT_ID('TABLE1') IS NOT NULL DROP TABLE TABLE1 CREATE TABLE TABLE1 (ID INT PRIMARY KEY IDENTITY(1,1),[NAME] VARCHAR(50),AGE INT) INSERT INTO TABLE1 ([NAME],AGE) VALUES('大卫1',50) INSERT INTO TABLE1 ([NAME],AGE) VALUES('约翰1',35) IF OBJECT_ID('TABLE2') IS NOT NULL DROP TABLE TABLE2 CREATE TABLE TABLE2 (ID INT PRIMARY KEY IDENTITY(1,1),[NAME] VARCHAR(50),AGE INT) INSERT INTO TABLE2 ([NAME],AGE) VALUES('大卫2',50) INSERT INTO TABLE2 ([NAME],AGE) VALUES('约翰2',35) IF OBJECT_ID('TABLE3') IS NOT NULL DROP TABLE TABLE3 CREATE TABLE TABLE3 (ID INT PRIMARY KEY IDENTITY(1,1),[NAME] VARCHAR(50),AGE INT) INSERT INTO TABLE3 ([NAME],AGE) VALUES('大卫3',50) INSERT INTO TABLE3 ([NAME],AGE) VALUES('约翰3',35) IF OBJECT_ID('TABLE4') IS NOT NULL DROP TABLE TABLE4 CREATE TABLE TABLE4 (ID INT PRIMARY KEY IDENTITY(1,1),[NAME] VARCHAR(50),AGE INT) INSERT INTO TABLE4 ([NAME],AGE) VALUES('大卫4',50) INSERT INTO TABLE4 ([NAME],AGE) VALUES('约翰4',35) END BEGIN SELECT * FROM TABLE1 //数据集1 SELECT * FROM TABLE2 //数据集2 SELECT * FROM TABLE3 //数据集3 SELECT * FROM TABLE4 //数据集4 END END
程序中调用存储过程
代码如下:
public DataSet GetProcedureName(out string out outVal) { using(var db = new Entities()) { var command=db.Database.Connection.CreateCommand(); //创建command的链接 command.CommandType = CommandType.StoredProcedure; //指向CommandType 为存储过程类型 command.CommandText = "PROCEDURENAME"; //存储过程名称 command.Parameters.AddRange(new SqlParameter[]{ new SqlParameter("paraKey1",paraVal1),//输入参数 new SqlParameter("paraKey2",paraVal2) //输出参数 { Direction = ParameterDirection.Output, //指向该参数是输出参数 SqlDbType = SqlDbType.VarChar, //输出参数的类型 Size = 200 //输出参数的大小 }, }); using(var adapter=new SqlDataAdapter(command as SqlCommand)) { DataSet dataSet = new DataSet();//声明数据集 adapter.Fill(dataSet); //添加数据集 outVal = command.Parameters[1].Value.ToString(); return dataSet; //返回数据集 } } }
在 .NET
WEBAPI
中调用
代码如下:
public HttpResponseMessage GetProcedureName() { DataSet result = new DataSet(); //声明数据集 result = GetProcedureName(); //调用方法 return Json(new APIResultModel() { result = new { data1 = result.Tables[0], data2 = result.Tables[1], data3 = result.Tables[2], data4 = result.Tables[3], } }); }
总结
使用此方法,可以完全避免EF
对存储过程的更新。我们只需要专注于存储过程即可。
这篇关于存储过程返回多个结果集,它在程序中这样做...的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)