C# 读取在存储过程多结果集

--SQL Server 测试环境搭建:

Create database Test;
go
USE [Test]
GO
if OBJECT_ID(‘Tab‘,‘U‘) is not null
	drop table Tab
go
CREATE TABLE [dbo].[Tab](
	[ID] [int] identity(1,1) NOT NULL,
	[name] [sysname] NOT NULL,
)
go
if OBJECT_ID(‘Tab2‘,‘U‘) is not null
	drop table Tab2
go
CREATE TABLE [dbo].[Tab2](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[TabID] [int] NOT NULL,
	[Name2] [nvarchar](50) NULL
) ON [PRIMARY]
GO

--创建存储过程:

if OBJECT_ID(‘P3‘,‘P‘) is not null
	drop procedure P3
go
create procedure P3
as
select * from Tab;
select * from Tab2;

--打开Visual Studio—创建项目—选择【控制台应用程序】

#region Using Directives
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#endregion

namespace TestReadingStoreProc
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection thisConnection = new SqlConnection(@"Server=(Local);Database=Test;User ID=sa;Password=1");
            SqlCommand thisCommand = thisConnection.CreateCommand();
            thisCommand.CommandType = CommandType.StoredProcedure;
            thisCommand.CommandText = "P3";
            SqlDataAdapter thisAdapter = new SqlDataAdapter(thisCommand);
            DataSet thisDataSet = new DataSet();
            thisAdapter.Fill(thisDataSet);
            if (thisDataSet.Tables.Count > 0)
            {
                Console.WriteLine("Table Name:{0}\nTable Rows:{1}",thisDataSet.Tables[0].TableName, thisDataSet.Tables[0].Rows.Count);
                Console.WriteLine("Table Name:{0}\nTable Rows:{1}", thisDataSet.Tables[1].TableName, thisDataSet.Tables[1].Rows.Count);
            }
            thisConnection.Close();
            Console.ReadKey();
        }
    }
}

----按F5运行结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-16 13:24:53

C# 读取在存储过程多结果集的相关文章

Linq中使用存储过程作为结果集(转)

存储过程 在我们编写程序中,往往需要一些存储过程,在LINQ to  SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中,有名为Customers Count By Region的存储过程.该存储过程返回顾客所在"WA"区域的数量. ALTER PROCEDURE [dbo].[NonRowset] (@param1 NVARCHAR(15)) AS BEGIN SET NOCOUNT ON; D

oracle 存储过程返回结果集

好久没上来了, 难道今天工作时间稍有空闲, 研究了一下oracle存储过程返回结果集. 配合oracle临时表, 使用存储过程来返回结果集的数据读取方式可以解决海量数据表与其他表的连接问题. 在存储过程中先根据过滤条件从海量数据表中选出符合条件的记录并存放到临时中, 可以通过一个视图将临时表与其他相关表连接起来, 从而避免海量数据造成的连接效率问题. 本文只讨论使用存储过程返回结果集. 具体实现如下: -- 启用服务器输出---------------------set serveroutput

SQL Server检索存储过程的结果集

目的:检索过滤执行存储过程的结果集 如下介绍两个常用的方法,但是都需要申明表结构:不知道是否有更简便的方法,如有更好的方法,请不吝赐教. 以系统存储过程sp_who2为例: 方法1:使用临时表 1 --1. 创建临时表 2 CREATE TABLE #tmp( 3 SPID int, 4 Status nvarchar(50), 5 Login nvarchar(50), 6 HostName nvarchar(50), 7 BlkBy nvarchar(50), 8 DBName nvarch

C#中使用Oracle存储过程返回结果集

问题: 在MSSQLServer中定义的存储过程可以直接返回一个数据集,如: create procedure sp_getAllEmployees as SELECT * FROM [NORTHWND].[dbo].[Employees] 在Oracle数据库中这样定义是错误的,怎么解决? 办法: Oracle中可以使用游标(Cursor)对数据集进行操作,但在存储过程输出参数中直接使用Cursor错误,此时的Cursor应该是一个定义游标的关键字并非类型,所以先要定义一个包,在包中声明全局的

mybatis调用mysql存储过程返回结果集

存储过程中经常需要返回结果集. Mysql 中直接用 select 即可返回结果集.而 oracle 则需要使用游标来返回结果集.这一点 Mysql 相对比较方便,如下代码即可实现输出结果集: 存储过程定义: DELIMITER $$ DROP procedure IF EXISTS pro_sql_data1 $$ CREATE procedure pro_sql_data1(in sear_name varchar(2000)) BEGIN if sear_name is not null

使用Dapper读取Oracle多个结果集

Dapper对SQL Server支持很好,但对于Oracle有些用法不一样,需要自己进行特殊处理. 1.首先要自定义一个Oracle参数类 1 public class OracleDynamicParameters : SqlMapper.IDynamicParameters 2 { 3 private readonly DynamicParameters dynamicParameters = new DynamicParameters(); 4 5 private readonly Li

java读取ORACLE 存储过程 返回游标(cursor) 格式 读取到List中

/**  * 执行存储过程(目前只支持返回一个游标) never null  *   * @param sql  *            执行的语句  * @param index  *            当前游标的下标  * @param obj  *            参数(用来替换sql语句中的?)  * @param rop  *            注册oracle的输出参数(注意,这里假如下标为1的是输入参数,为2的输出参数  *            则游标要以输出参数

MYSQL存储过程以及结果集

#存储过程delimiter //create procedure p1()beginselect * from t1;end//delimiter ;#执行存储过程call p1() #创建存储过程delimiter \\create procedure p1(in i1 int, in i2 int,inout i3 int,out rl int)BEGINDECLEAR temp1 int;DECLEAR temp2 int default 0; set temp1 = 1; set rl

python 调用mysql存储过程返回结果集

存储过程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = imid and user = iuser; end; | delimiter ; python调用: import mysql.connector cnx = mysql.connector.connect( user='test',p