Oracle如何实现带输入输出参数存储过程
发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,这篇文章主要介绍Oracle如何实现带输入输出参数存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!begin /*这里不能直接执行select语句但可以直接执行updat
千家信息网最后更新 2025年02月13日Oracle如何实现带输入输出参数存储过程
这篇文章主要介绍Oracle如何实现带输入输出参数存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
begin /*这里不能直接执行select语句但可以直接执行update、delete、insert语句*/ 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_USERasbegin 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 /*(页数-1)=0 说明为第一页则(页数-1)*每页显示多少条否则(页数-1)*每页显示多少条+1*/ case when (pageIndex-1)=0 then ((pageIndex-1)*1) else (((pageIndex-1)*pageCount)+1) end else rownum_ end; /*(页数-1)*每页显示多少条+1*/ else open p_cur for select Count(1) as totalCount from TEMP_Dev_data_Table; end if;end p_DevData;
以上是"Oracle如何实现带输入输出参数存储过程"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
页数
类型
语句
参数
过程
存储
输入
输出
内容
数据
篇文章
井盖
价值
兴趣
小伙
小伙伴
更多
知识
行业
视频
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络安全自查整改
企业信息网络安全管理办法
我国列车网络技术的发展
网络安全分析工具使用方法
维普数据库全程
十四五关于医疗行业网络安全
移动公司软件开发工资多少钱
python 特征存入数据库
网络数据库技术章节测试答案
我的世界航海服务器
网关 dns服务器
hp服务器如何进pe
导入导出excel到数据库
上海广鼎互联网科技有限公司
网络安全是腾讯
不允许直接操作数据库怎么办
干部在线学习软件开发中标
qq邮箱 服务器安全性
云更新服务器管理器
华为云服务器云计算
服务器进入带网络的安全模式
网络安全威胁情报 内容
惠普380服务器什么时候出的
手机出现服务器异常怎么回事
朝阳区正规软件开发专业服务
常用的数据库恢复技术
新基建网络安全现状
守卫者 网络安全
深圳杰迪网络技术
什么数据库可以代替sql