记录一下,免得以后忘记了又要到处去找。

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_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

/*(页数-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带输入输出参数存储过程(包括sql分页功能),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

oracle接收输入参数,Oracle带输入输出参数存储过程(包括sql分页功能)相关推荐

  1. oracle带输出参数存储,oracle带输入输出参数存储过程(包括sql分页功能)

    记录一下,免得以后忘记了又要到处去找. begin /*这里不能直接执行select语句但可以直接执行update.delete.insert语句*/ end里面不能接执行select语句,声明会话级 ...

  2. C#调用带输入输出参数及结果集Oracle存储过程

    数据库存储过程如图: winfrom后端代码 引用using Oracle.ManagedDataAccess.Client; public DataTable GetCommadDECSData(s ...

  3. java 输出参数_Java方法输出参数

    在写Java代码的时候,自定义方法的时候,都会牵扯到参数问题,方法参数包括输出参数和输入参数. 下面主要说说输出参数: 1.没有输出参数的时候就直接把输出参数写成void就可以. 2.当输出参数只有一 ...

  4. 写一个带输入输出的存储过程_携程大佬带你写一个可扩展的Spring插件。

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:宋顺   来源:nobodyiam.com # 背景介绍 Spring现在几乎已经成为了Java开发的必备框架,在享受Spring ...

  5. Matlab函数语法(函数可以接受多个输入参数,并可能返回多个输出参数)

    一个函数是一组在一起执行任务的语句. 在MATLAB中,函数在单独的文件中定义.文件的名称和函数的名称应该是一样的. 函数在自己的工作空间内的变量上运行,这个变量也称为本地工作空间,与在MATLAB命 ...

  6. oracle保持会话连接,oracle中连接与会话

    oracle中连接与会话 oracle中连接与会话不是一个概念!!! 在Oracle中,连接只是客户进程和数据库实例之间的一条特殊线路,最常见的就是网络连接.这条连接可能连接到一个专用服务器进程,也可 ...

  7. oracle工作日执行job,Oracle中执行Job定时执行

    Oracle也可以使用Job来定时执行某个存储过程或SQL语句. 1. 首先要show   parameter  job看一下这个参数值,如果是0的话,要调整此参数大于1才行.修改可执行作业个数为10 ...

  8. oracle动态语句事务,oracle 动态SQL execute immediate

    execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; e ...

  9. Python输入三角形的三条边求面积,输入圆的半径输出面积周长的两个程序的代码

    目录 前言 一.输入三角形的三条边求面积 1.实现的功能 2.代码程序 3.运行截图 二.输入圆的半径输出面积周长 1.实现的功能 2.代码程序 3.运行截图 前言 1.因多重原因,本博文由两个程序代 ...

最新文章

  1. 重构-改善既有代码的设计:重构原则(二)
  2. eureka的自我保护
  3. 学计算机广东2B大学,2017年广东2B大学最新排名情况
  4. 世界奥运建筑文学第一书  北京奥运长篇纪实第一人
  5. Intervals on the Ring
  6. NB-IoT(7)---开发环境搭建及模组驱动开发
  7. 项目工程自动化 - OCLint
  8. iOS8新建一个新的空白工程
  9. iOS地图 -- 定位初使用
  10. java 保存文件 中文乱码_java文件中文乱码问题
  11. 【NOIP提高A组模拟2018.8.8】没有硝烟的战争
  12. 转 activity的launch mode
  13. 证书服务器 过期,iis7服务器证书过期如何换新的以及证书服务器
  14. Argo-DCS学习笔记
  15. uboot-链接脚本(u-boot.lds)
  16. 国密SM1、SM2、SM3、SM4算法资料大全
  17. tf 加速训练,节省内存 fit_generator
  18. 解决Windows剪切、删除、移动海量文件时,速度慢和卡死的问题
  19. PowerBI矩阵分析模型
  20. 金属摇滚录音混音教程|总想要好作品,前期制作你懂了多少?|MZD Studios

热门文章

  1. 面向对象程序设计上机练习一(函数重载)
  2. Linux系统文件类型
  3. PostgreSQL在函数内返回returning
  4. 比特币现金网络遭攻击?BCH粉丝:放马过来吧!
  5. 比特币前核心开发者Mike Hearn三年前的预测一一应验
  6. linux下配置环境变量【原创】
  7. [jQuery]使用jQuery.Validate进行客户端验证(高级篇-下)——不使用微软验证控件的理由...
  8. [Android Pro] 分析 Package manager has died
  9. 关于B站除夕夜被攻击
  10. linux 无线网络配置工具wpa_supplicant与wireless-tools