Oracle存储过程返回DataSet(多个DataTable)给C#
一、存储过程
CREATE OR REPLACE PROCEDURE GET_SENDEXCEL_XY
(
ZGJ182X OUT SYS_REFCURSOR ,
ZGJ182Y OUT SYS_REFCURSOR ,
ZXN182X OUT SYS_REFCURSOR ,
ZXN182Y OUT SYS_REFCURSOR ,
ZLH182X OUT SYS_REFCURSOR ,
ZLH182Y OUT SYS_REFCURSOR
)
IS
mysql varchar(8000) :='' ;
mysql_first varchar(8000) :='' ;
mysql_gj varchar(8000) :='' ;
mysql_xn varchar(8000) :='' ;
mysql_lh varchar(8000) :='' ;
mysql_gj_na varchar(8000):='';
mysql_yb varchar(8000) :='' ;
firstday varchar(50) :=''; ---前三周第1天
BEGIN
select to_char(m.fstartdate,'yyyy-mm-dd') into firstday
from scada_db.avg_week_month m
where to_char(m.fstartdate,'yyyy-mm-dd') <=to_char(sysdate-14-1,'yyyy-mm-dd') --当天往前一天
and to_char(m.fenddate,'yyyy-mm-dd')>=to_char(sysdate-14-1,'yyyy-mm-dd');
select a.sqltext into mysql_first
from sysolap.AVG_DIA_SQL a where a.code='send_xy_All3';
mysql_first:=replace(mysql_first,'{firstday}',firstday); ---首先替换周日期
mysql_gj:=replace(mysql_first,'{GJXN}','ZGJPA'); ---初始化一期
mysql_xn:=replace(mysql_first,'{GJXN}','ZXNPA'); ----初始化二期
mysql_lh:= replace(mysql_first,'{GJXN}','ZLHPA'); ----初始化龙X
mysql_gj_na:= replace(mysql_first,'{GJXN}','ZXNNA'); ----初始化西XNA
mysql_yb := replace(mysql_first,'{GJXN}','ZYBPA'); ----初始化宜X182
mysql_first:='';
----1 ZGJ182X
mysql:=replace(mysql_gj,'{table}','pcx182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZGJ182X for mysql ;
----2 ZGJ182Y
mysql:=replace(mysql_gj,'{table}','pcy182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZGJ182Y for mysql ;
---3 ZXN182X
mysql:=replace(mysql_xn,'{table}','pcx182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZXN182X for mysql ;
-- 4 ZXN182Y
mysql:=replace(mysql_xn,'{table}','pcy182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZXN182Y for mysql ;
---31 ZLHPA182X
mysql:=replace(mysql_lh,'{table}','pcx182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZLH182X for mysql ;
-- 41 ZLHPA182Y
mysql:=replace(mysql_lh,'{table}','pcy182');
mysql:=replace(mysql,'{边宽对角}','边宽182');
open ZLH182Y for mysql ;
END;
二、C#程序接收存储过程
/// <summary>
/// 获取数据
/// </summary>
/// <param name="procName">存储过程名称</param>
/// <param name="conString">数据库连接串</param>
/// <param name="strARR">入参数组</param>
/// <returns></returns>
private DataSet getData(string procName, string conString, params string[] strARR)
{
using (Oracle.ManagedDataAccess.Client.OracleConnection con = new Oracle.ManagedDataAccess.Client.OracleConnection())
{
OracleCommand cmd2 = new OracleCommand();
OracleDataAdapter oda2 = new OracleDataAdapter(cmd2);
OracleParameter par1 = null;
DataSet ds = new DataSet();
con.ConnectionString = 数据库连接串;
con.Open();
cmd2.Connection = con;
cmd2.CommandType = CommandType.StoredProcedure;
cmd2.CommandText = procName;
foreach (string item in strARR)
{
par1 = new OracleParameter(item, OracleDbType.RefCursor);
par1.Direction = ParameterDirection.Output;
cmd2.Parameters.Add(par1);
}
oda2.Fill(ds);
con.Close();
return ds;
}
}
相关文章:
Oracle存储过程返回DataSet(多个DataTable)给C#
一、存储过程 CREATE OR REPLACE PROCEDURE GET_SENDEXCEL_XY ( ZGJ182X OUT SYS_REFCURSOR , ZGJ182Y OUT SYS_REFCURSOR , ZXN182X OUT SYS_REFCURSOR , ZXN182Y OUT SYS_REFCURSOR , ZLH182X OUT SYS_REFCURSOR …...

如何往excel中写子表?
with pd.ExcelWriter("C:/last_date.xlsx") as writer:for i in range(0, 10):df pd.DataFrame()df.to_excel(writer, indexFalse, sheet_namestr(days[i 1]))...

Flutter 控件查阅清单
为了方便记录和使用Flutter中的各种控件,特写此博客以记之,好记性不如烂笔头嘛:) 通过控件的首字母进行查找,本文会持续更新 控件目录 AAppBar BCContainerColumn (列) DDivider (分割线) EElev…...

【高效开发工具系列】gson入门使用
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Python中的缺失值
Python中的缺失值 1、情景描述2、Python中的缺失值 1、情景描述 在使用Pandas中的文件读取API读取Excel、CSV或TXT等文件时,我们可能需要对读取到的数据进行简单清洗。例如,将其中的表示空值的字符串替换为真正意义上的缺失值 来看一个例子:…...

JVM 字节码
JVM概述 问题引出 你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然,直接默认吧&…...
ComfiUI API调用随记
来进行知识接力了: 首先了解下ComfiUI的APIstable diffusion comfyui的api使用教程-CSDN博客 对于ComfiUI,接口比较简单。查询接口比较容易看明白。 对于发起prompt的请求,如果需要图片的,则需预先上传图片给ComfiUI,…...

Dockerfile讲解
Dockerfile 1. 构建过程解析2. Dockerfile常用保留字指令3. 案例3.1. 自定义镜像mycentosjava83.2. 虚悬镜像 4. Docker微服务实战 dockerfile是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 dockerfile定义了进程需要的一切东西&…...
Ansible及其优势是什么?
Ansible是一款极其简单的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点。实现了批量系统配置,批量程序部署,批量运行命令等功能。同时Ansible是基于模块工作,…...

使用群晖Docker搭建HomeAssistant并实现异地公网访问家中智能设备
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 使用群晖Docker搭建HomeAssistant并实现异地公网访问 文章目录 使…...

重塑生成式AI时代数据战略,亚马逊云科技re:Invent大会Swami主题演讲
re:lnvent 2023 Swami Sivasubramanian主题演讲,数据、AI和人类共进共生,重塑生成式AI时代的数据战略。 赋能人才加持生成式AI必备能 生成式AI创新中心:解决生成式AI工程化挑战。 Amazon Bedrock平台PartyRock:生成式AI应用程序实…...

【恋上数据结构】哈夫曼树学习笔记
哈夫曼树 哈夫曼编码(Huffman Coding) 哈夫曼编码,又称为霍夫曼编码,它是现代压缩算法的基础 假设要把字符串 [ABBBCCCCCCCCDDDDDDEE] 转成二进制编码进行传输。 可以转成 ASCII 编码 (6569,10000011000101) &…...

前端下拉框select标签的插件——select2.js
本文采用的是select2 版本:Select2 4.0.6-rc.1。 可以兼容IE8及以上。亲测过。 官网:Getting Started | Select2 - The jQuery replacement for select boxes 一、认识select2.js 1、使用插件,首先要引入别人的插件了,你可以选…...
【MySQL的基本命令{DML 和 DDL}】
MySQL的基本命令 {DML 和 DDL} MySQL的基本命令展示所有数据库展示某个数据库中所有的表切换到某个数据库查看当前在哪个数据库查询一张表的全部数据新建一个数据库新建一张表插入一条数据删除一个表删除一个库描述表的信息展示表的创建sql代码展示库的创建sql代码导出数据 &am…...

unity3d模型中缺失animation
在 模型的Rig-Animationtype 设置成Legacy https://tieba.baidu.com/p/2293580178...
搭建自己的wiki知识库【转】
有前端基础,会Markdown、会HTML和CSS,选择 Hexo 有Vue基础可以选择 vuePress 或者 vitePress 会Go可以选择 Hugo 会Rust可以选择 Zola 会Ruby可以选择 Jekyll 会PHP可以考虑使用 WordPress 其他开源项目:docsify、GitBook 详见:如…...
【笔记】常用的Linux命令之解压缩:tar、zip、rar 命令
1、tar 常用压缩和解压缩 # 压缩文件 file1 和目录 dir2 到 test.tar.gz tar -zcvf test.tar.gz file1 dir2 # 解压 test.tar.gz(将 c 换成 x 即可) tar -zxvf test.tar.gz 额外知识:查看压缩文件内容 # 列出压缩文件的内容 tar -ztvf test…...

谈谈MYSQL索引
基本介绍 索引是帮助MySQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗。 通俗来说, 索引就相当于一本书的目录,…...

线程中出现异常的处理
目录 前言 正文 1.线程出现异常的默认行为 2.使用 setUncaughtExceptionHandler() 方法进行异常处理 3.使用 setDefaultUncaughtExceptionHandler() 方法进行异常处理 4.线程组内处理异常 5.线程异常处理的优先性 总结 前言 在紧密交织的多线程环境中,异…...

点击元素以外的事件监听
在项目中,我们经常会遇到需要监听目标元素以外的区域被点击或鼠标移入移出等需求。 例如下面我们有一个表格里面嵌套表单的组件 我希望点击n行的时候,n行的元素变成表单元素进行输入或者选择, 当我点击其他其他区域n行又会恢复成数据展示…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...