iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle如何实现带输入输出参数存储过程
  • 621
分享到

Oracle如何实现带输入输出参数存储过程

2024-04-02 19:04:59 621人浏览 独家记忆
摘要

这篇文章主要介绍oracle如何实现带输入输出参数存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!begin end里面不能接执行select语句,声明会话级临时表

这篇文章主要介绍oracle如何实现带输入输出参数存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

begin end里面不能接执行select语句,声明会话级临时表必须有“execute immediate 'TRUNCATE TABLE 表名';”这一句不然其他的session无法drop(TRUNCATE TABLE 表名 必须在 ‘drop table 表名' 这一句前执行)

create or replace procedure p_DevData(p_id IN varchar2(150),pageIndex in NUMBER,pageCount in NUMBER,totalCount in NUMBER,p_cur out sys_refcursor) 
AUTHID CURRENT_USER
as
begin
 declare
 Num_Id number;
 toCount NUMBER;
 strsql varchar2(1000);
 begin
 strSql:='insert into TEMP_ROBOT_Id select id,robot_typeid from ROBOT where ID=:p_id and IS_DEL=0 and STATUS=1';
 execute immediate 'TRUNCATE TABLE TEMP_ROBOT_Id';
 execute immediate 'drop table TEMP_ROBOT_Id';
 execute immediate 'Create Global Temporary Table TEMP_ROBOT_Id(ro_id varchar2(150),robot_typeid number)On Commit Preserve Rows';--创建会话级临时表
execute immediate strSql using p_id;
 execute immediate 'Commit';
 execute immediate 'TRUNCATE TABLE TEMP_Dev_Table';
 execute immediate 'drop table TEMP_Dev_Table ';
 execute immediate 'Create Global Temporary Table TEMP_Dev_Table (id varchar2(150),DEVICE_CODE varchar2(150),NAME varchar2(150))On Commit Preserve Rows';--创建会话级临时表
execute immediate 'insert into TEMP_Dev_Table select distinct bai.ID,bai.DEVICE_CODE,bai.NAME from DEVICE_BASE_INFO bai WHERE bai.ROBOT_ID =(select ro_id from TEMP_ROBOT_Id) and IS_DEL=0 and STATUS=1';
 execute immediate 'Commit';
 execute immediate 'TRUNCATE TABLE TEMP_Dev_data_Table';
 execute immediate 'drop table TEMP_Dev_data_Table ';
 execute immediate ' Create Global Temporary Table TEMP_Dev_data_Table (id varchar2(150),DEVICE_CODE varchar2(150),
 NAME varchar2(150),type_name varchar2(100),YY_NUM varchar2(10),MM_NUM varchar2(10),Day_NUM varchar2(10),
 HH_NUM varchar2(10) )On Commit Preserve Rows';--创建会话级临时表
select Count(1) Into toCount from TEMP_ROBOT_Id;
 if toCount>0 then
 select robot_typeid Into Num_Id from TEMP_ROBOT_Id;
 if Num_Id=1 then
 dbms_output.put_line('视频没有数据');
elsif Num_Id=2 then
 dbms_output.put_line('井盖数据不通');
elsif Num_Id=3 then
 execute immediate 'TRUNCATE TABLE TEMP_SMOKE_ALARM_INFO';
 execute immediate 'drop table TEMP_SMOKE_ALARM_INFO ';
 execute immediate 'CREATE GLOBAL TEMPORARY table TEMP_SMOKE_ALARM_INFO ON COMMIT Preserve ROWS as select * from SMOKE_ALARM_INFO';--创建会话级临时表
execute immediate 'Commit';
 insert into TEMP_Dev_data_Table select t.ID,t.DEVICE_CODE,t.NAME,t.type_name,t.YY_NUM,t.MM_NUM,t.Day_NUM,t.HH_NUM from (
 select tab.ID,tab.NAME,tab.DEVICE_CODE,'烟感报警'as type_name,
 (select count(s.DEVICE_BASE_INFOID) HH_NUM from TEMP_SMOKE_ALARM_INFO s where s.DEVICE_BASE_INFOID=tab.ID
 group by to_char(s.CREATE_DATE,'YYYY'),s.DEVICE_BASE_INFOID) as YY_NUM
 from TEMP_Dev_Table tab)t where t.yy_num is not null;
 Commit;
 elsif Num_Id=4 then
 dbms_output.put_line('未知类型');
elsif Num_Id=5 then
 dbms_output.put_line('未知类型');
else
 dbms_output.put_line('未知类型');
end if;
 end if; 
 end;
 if totalCount<=0 then 
 open p_cur for select * from (
 select row_.*, rownum rownum_
 from (
 select t.* from TEMP_Dev_data_Table t
 order by t.id desc
 ) row_
 where rownum <=case when pageCount <> 0 then pageCount*1 else rownum end 
 )
where rownum_>=case 
 when pageCount <> 0 
 then 
 
 case when (pageIndex-1)=0 then ((pageIndex-1)*1) else (((pageIndex-1)*pageCount)+1) end
 else rownum_ end; 
 else
 open p_cur for select Count(1) as totalCount from TEMP_Dev_data_Table;
 end if;
end p_DevData;

以上是“Oracle如何实现带输入输出参数存储过程”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle如何实现带输入输出参数存储过程

本文链接: https://www.lsjlt.com/news/56622.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle如何实现带输入输出参数存储过程
    这篇文章主要介绍Oracle如何实现带输入输出参数存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!begin end里面不能接执行select语句,声明会话级临时表...
    99+
    2022-10-18
  • MySQL存储过程输入参数(in),输出参数(out),输入输出参数(inout)
    目录什么是存储过程?语法格式局部变量用户变量系统变量传入参数输出参数修改传入参数值什么是存储过程? mysql 5.0 版本开始支持存储过程。 简单的说,存储过程就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑...
    99+
    2022-07-11
    MySQL存储过程输入参数in MySQL输出参数out MySQL输入输出参数inout
  • MySQL存储过程输入参数,输出参数和输入输出参数是什么
    这篇“MySQL存储过程输入参数,输出参数和输入输出参数是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL存储过...
    99+
    2023-07-02
  • MySQL存储过程:输出参数?
    这是一个存储过程,它采用一个参数作为输入 (IN),第二个参数作为输出 (OUT)mysql> delimiter // mysql> create procedure Sp_SQRT(IN Number1 INT, OUT N...
    99+
    2023-10-22
  • Sql Server中存储过程中输入和输出参数是什么
    本篇文章为大家展示了Sql Server中存储过程中输入和输出参数是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。[sql] -- 【创建存储过程】U...
    99+
    2022-10-19
  • Sql Server存储过程中如何调用存储过程接收输出参数返回值
    这篇文章将为大家详细讲解有关Sql Server存储过程中如何调用存储过程接收输出参数返回值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建存储过程:AL...
    99+
    2022-10-18
  • 如何创建带有 IN 参数的 MySQL 存储过程?
    为了让它理解,我们使用名为“student_info”的表,它具有以下值 -mysql> Select * from student_info; +-----+---------+------------+---------...
    99+
    2023-10-22
  • Java如何定义Holder类实现参数的输出
    这篇文章主要介绍Java如何定义Holder类实现参数的输出,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!定义Holder类实现参数的输出在很多语言中,函数的参数都有输入(in)、输出(out)和输入输出(inout...
    99+
    2023-06-02
  • python如何实现输入2个整形数字并输出最大值
    这篇文章将为大家详细讲解有关python如何实现输入2个整形数字并输出最大值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。import math"""需求:输入2个...
    99+
    2023-06-02
  • Linux重定向技巧:PHP如何实现LeetCode编程中的输入输出?
    在LeetCode编程中,输入输出是非常重要的一部分。在很多题目中,需要从标准输入中读取数据,然后进行计算并输出结果。在本篇文章中,我们将会介绍如何使用Linux重定向技巧,在PHP中实现LeetCode编程中的输入输出。 什么是Linu...
    99+
    2023-09-02
    linux leetcode 重定向
  • Java如何实现通过键盘输入一个数组
    目录如何通过键盘输入一个数组第一种方法:(不限制输入数组的长度)第二种方法:(限制输入的个数)不限制从键盘输入一个数组下面用二分查找举例如何通过键盘输入一个数组 有时候在编写Jave...
    99+
    2022-11-13
  • Java 如何通过注解实现接口输出时数据脱敏
    目录Java注解实现接口输出数据脱敏先声明了一个注解我们目前只支持对手机号然后我们需要实现注解的拦截功能我对默认声明和脱敏名称和手机号进行了测试Java注解的字段脱敏处理定义需要脱敏...
    99+
    2022-11-12
  • 如何实现存储过程返回数组对象
    本篇内容主要讲解“如何实现存储过程返回数组对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现存储过程返回数组对象”吧! 其...
    99+
    2022-10-18
  • 如何实现PL/SQL中编写Oracle数据库分页的存储过程
    这篇文章主要为大家展示了“如何实现PL/SQL中编写Oracle数据库分页的存储过程”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现PL/SQL中编写Or...
    99+
    2022-10-18
  • 微信小程序如何实现MUI数字输入框效果
    这篇文章将为大家详细讲解有关微信小程序如何实现MUI数字输入框效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下效果图WXML<view cl...
    99+
    2022-10-19
  • Mysql存储过程如何实现历史数据迁移
    目录Mysql迁移历史数据需求陈述心路历程最终实现总结Mysql迁移历史数据 记录一下工作中由于业务需要以及系统的数据库模型变更,导致需要做一下历史数据迁移的解决办法 需求陈述 一共...
    99+
    2023-01-28
    Mysql存储过程 Mysql历史数据迁移 Mysql数据迁移
  • Python中如何实现分布式系统的二维码数据传输和存储?
    随着互联网技术的不断发展,分布式系统已经成为了大数据时代的核心应用之一。在分布式系统中,数据的传输和存储是非常重要的一环。本文将介绍如何使用Python实现分布式系统的二维码数据传输和存储。 一、什么是二维码? 二维码是一种二维图形码,通...
    99+
    2023-10-02
    关键字 二维码 分布式
  • sql server如何使用临时存储过程实现使用参数添加文件组脚本复用
    这篇文章主要介绍sql server如何使用临时存储过程实现使用参数添加文件组脚本复用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!create procedure&nbs...
    99+
    2022-10-18
  • 如何实现SQL查询出表、存储过程、触发器的创建时间和最后修改时间
    本篇内容主要讲解“如何实现SQL查询出表、存储过程、触发器的创建时间和最后修改时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现SQL查询出表、存储过程...
    99+
    2022-10-18
  • sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表
    这篇文章给大家分享的是有关sql存储过程如何实现动态根据表数据复制一个表的数据到另一个表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。动态根据表数据复制一个表的数据到另一个表把t...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作