oracle proc

CREATE OR REPLACE PROCEDURE user_learn_stat_p(v_in_user_id IN number) AS
--参数IN表示输入参数,
--OUT表示输入参数,类型可以使用任意Oracle中的合法类型。
--定义变量
v_classroom_id number(10); --课程id
v_user_id number(10); --课程id
vs_msg varchar2(4000); --错误信息变量
dept_no_array_c dbms_sql.Number_Table; --数组完成
ilm_classroom_id dbms_sql.Number_Table; --综合学习课程id
dept_no_array_t dbms_sql.Number_Table; --数组总计
dept_no_array_classroom dbms_sql.Number_Table; --数组classroomid
dept_no_array_classroom_name dbms_sql.Varchar2_Table; --数组classroom名称

v_classroom_count number(10);

v_i number(10);

v_j number(10);
v_k number(10);
v_kk number(10);

v_ret number(10);

--定义游标(简单的说就是一个可以遍历的结果集)

CURSOR cur_1 IS

select C.id,

C.name,

C.type,

EV.start_date,

C.rco_id,

NVL(R.title, '') as rco_title,

'Y' as is_enrolled,

C.location,

C.is_sample,

C.is_browsable,

'Y' as is_published,

DECODE(C.cal_ev_featured, null, 'N', 'Y') as is_featured,

cg.name as content_group_name,

E.cert_period_start_date,

E.cert_period_end_date,

E.initial_certification_days,

E.renewal_certification_days

from classroom C,

cal_events EV,

rco R,

enrollment E,

privilege_ref P,

content_group cg

where P.user_id = v_in_user_id

and P.target_id = E.classroom_id

and E.user_id = v_in_user_id

and E.classroom_id = C.id

and E.is_deleted = 'N'

and C.cal_event_id = EV.id

and C.is_published = 'Y'

and C.is_hidden = 'N'

and (EV.end_date > sysdate OR EV.end_date IS NULL OR

EV.repeat_until > sysdate)

and C.content_group_id = cg.id

and C.rco_id = R.id(+)
and C.id not in(
SELECT /* IlmEnrolledView */
--c.name as cname,
c.id as cid
FROM GROUP_ENROLLMENT GE,
CLASSROOM_GROUP CG,
classroom_group_xref x,
classroom c
WHERE GE.CLASSROOM_GROUP_ID = CG.ID
and x.class_id = c.id
and cg.id = x.group_id
AND CG.IS_PUBLISHED = 'Y'
AND GE.USER_ID = v_in_user_id
AND GE.IS_DELETED = 'N'
AND GE.SITE_ID = CG.SITE_ID
AND CG.TYPE = 'I'
);

CURSOR cur_2 IS
SELECT /* IlmEnrolledView */
c.name as cname, c.id as cid
FROM GROUP_ENROLLMENT GE,
CLASSROOM_GROUP CG,
classroom_group_xref x,
classroom c
WHERE GE.CLASSROOM_GROUP_ID = CG.ID
and x.class_id = c.id
and cg.id = x.group_id
AND CG.IS_PUBLISHED = 'Y'
AND GE.USER_ID = v_in_user_id
AND GE.IS_DELETED = 'N'
AND GE.SITE_ID = CG.SITE_ID
AND CG.TYPE = 'I';

BEGIN

select count(*)

into v_classroom_count

from classroom C,

cal_events EV,

rco R,

enrollment E,

privilege_ref P,

content_group cg

where P.user_id = v_in_user_id

and P.target_id = E.classroom_id

and E.user_id = v_in_user_id

and E.classroom_id = C.id

and E.is_deleted = 'N'

and C.cal_event_id = EV.id

and C.is_published = 'Y'

and C.is_hidden = 'N'

and (EV.end_date > sysdate OR EV.end_date IS NULL OR

EV.repeat_until > sysdate)

and C.content_group_id = cg.id

and C.rco_id = R.id(+)
and C.id not in(
SELECT /* IlmEnrolledView */
--c.name as cname,
c.id as cid
FROM GROUP_ENROLLMENT GE,
CLASSROOM_GROUP CG,
classroom_group_xref x,
classroom c
WHERE GE.CLASSROOM_GROUP_ID = CG.ID
and x.class_id = c.id
and cg.id = x.group_id
AND CG.IS_PUBLISHED = 'Y'
AND GE.USER_ID = v_in_user_id
AND GE.IS_DELETED = 'N'
AND GE.SITE_ID = CG.SITE_ID
AND CG.TYPE = 'I'
);

--用输入参数给变量赋初值,用到了Oralce的SUBSTR TO_CHAR ADD_MONTHS TO_DATE 等很常用的函数。

v_user_id := v_in_user_id;

--然后用内置的DBMS_OUTPUT对象的put_line方法打印出影响的记录行数,其中用到一个系统变量SQL%rowcount

--DBMS_OUTPUT.put_line('del上月记录='||SQL%rowcount||'条');

--遍历游标处理后更新到表。遍历游标有几种方法,用for语句是其中比较直观的一种。


v_k := 0;

FOR rec2 IN cur_2 LOOP
v_k := v_k + 1;
ilm_classroom_id(v_k) := rec2.cid;
dbms_output.put_line('综合学习'||ilm_classroom_id(v_k));
END LOOP;

v_i := 0;

FOR rec IN cur_1 LOOP

v_i := v_i + 1;

v_classroom_id := rec.id;

dept_no_array_classroom(v_i) := rec.id;

select mm.name
into dept_no_array_classroom_name(v_i)
from classroom mm

where mm.id = v_classroom_id;

SELECT /* UserStatusView */

completed, total

into dept_no_array_c(v_i), dept_no_array_t(v_i)

FROM (SELECT SUM(DECODE(nvl(P.STATUS, 'N'), 'N', 1, 0)) AS NOT_ATTEMPTED,

SUM(DECODE(P.STATUS, 'C', 1, 0)) AS COMPLETED,

SUM(DECODE(P.STATUS, 'P', 1, 0)) AS PASSED,

SUM(DECODE(P.STATUS, 'I', 1, 0)) AS INCOMPLETE,

SUM(DECODE(P.STATUS, 'F', 1, 0)) AS FAILED,

COUNT(P.child_id) AS TOTAL

FROM (select x.child_id, P.status

from tree_xref x,

performance p,

rco,

classroom c,

enrollment E

where c.id = v_classroom_id

and x.parent_id = c.rco_id

and x.child_id = rco.id

and p.rco_id(+) = rco.source_rco_id

and p.user_id(+) = v_user_id

and rco.is_published = 'Y'

and E.user_id(+) = v_user_id

and E.classroom_id(+) = C.id

and E.cert_period_start_date is null

UNION

select x.child_id, P.status

from tree_xref x,

certification_performance p,

rco,

classroom c,

enrollment E

where c.id = v_classroom_id

and x.parent_id = c.rco_id

and x.child_id = rco.id

and p.rco_id(+) = rco.source_rco_id

and p.user_id(+) = v_in_user_id

and p.classroom_id(+) = v_classroom_id

and p.end_date(+) is null

and rco.is_published = 'Y'

and E.user_id = v_user_id

and E.classroom_id = C.id

and E.cert_period_start_date is not null) P);

END LOOP;

dbms_output.put_line('课程总计');

dbms_output.put_line(v_classroom_count);

v_ret := 0;

FOR v_j in 1 .. v_classroom_count loop

if dept_no_array_t(v_j) = 0 or dept_no_array_c(v_j) = 0 or
dept_no_array_c(v_j) / dept_no_array_t(v_j) < 1 then
v_ret := v_ret + 1;
end if;

dbms_output.put_line('!!!');

dbms_output.put_line(v_j);

dbms_output.put_line(dept_no_array_classroom(v_j));

dbms_output.put_line(dept_no_array_classroom_name(v_j));

dbms_output.put_line('完成');

dbms_output.put_line(dept_no_array_c(v_j));

dbms_output.put_line('总计');

dbms_output.put_line(dept_no_array_t(v_j));

dbms_output.put_line('百分比');

dbms_output.put_line(dept_no_array_c(v_j) / dept_no_array_t(v_j));

dbms_output.put_line('&&&');
end loop;
dbms_output.put_line('未完成课程');

dbms_output.put_line(v_ret);

--错误处理部分。OTHERS表示除了声明外的任意错误。SQLERRM是系统内置变量保存了当前错误的详细信息。

EXCEPTION

WHEN OTHERS THEN

vs_msg := 'ERROR IN user_learn_stat_p():' || SUBSTR(SQLERRM, 1, 500);

ROLLBACK;

--把当前错误记录进日志表。

INSERT INTO LOG_INFO

(proc_name, error_info, op_date)

VALUES

('user_learn_stat_p', vs_msg, SYSDATE);

COMMIT;

RETURN;

END;
Unity开发抖音小游戏存储的几种方法分析 前段时间写小游戏为了省事一直就没有研究抖音小游戏的存储方案,一直使用的是unity中的PlayerPrefs去做的存储,但是后来发现官方会一直提醒让使用抖音sdk中的新文件存储系统,从而降低内存占用。 阅读详情

相关推荐

Microduck机器鸭开源AI项目:本地部署与模型微调实战指南

开源AI模型的本地化部署与定制化训练正成为开发者关注的技术趋势。与依赖云端API的在线服务不同,本地部署允许用户将模型权重下载至自有GPU环境,通过命令行或WebUI完成推理、批量任务处理及API集成,在数据隐私、离线使用和接口稳定性方面具备天然优势。模型微调则基于预训练权重,利用领域数据训练特定任务,从而提升生成质量与业务适配度。这一技术路径广泛应用于内容生成、智能对话、自动标注等场景,尤其适合消费级显卡开发者、数据敏感型团队及二次开发研究者。Microduck(机器鸭)作为近期预售火爆的开源项目,围绕“

weixin_29082143的博客 414

proc_oracle

#include<cstring> exec sql include sqlca;exec sql begin declare section; char userpwd[30]; struct MatchedLogRec { char logname[32]; int pid; int logintime; int logouttime; int durat

超哥的专栏 555

手眼标定(EyeToHand)推导

Base为基坐标系(B),工具末端坐标系(T),标定板为Mark坐标系(M),相机坐标系(C)对于每两个姿态都存在上式,组成一个AX=XB的矩阵方程,X为。此时转换成AX=0的问题,单纯用SVD求奇异解便可得到。相机坐标系到Base基坐标系下的转换关系。已知标定板与机械臂末端的相对位置固定不变,,即。带入(2)式求,至此求解出需要的手眼矩阵。在眼在手外的时候,其实是要求解。

stevenreally6的博客 1143

oracle中proc是什么意思,oracle中proc的学习

(待查) Oracle,PROC 0 1403 -1 (待查) 1480 -1405 Informix,ESQL/C -236 -217 Oracle,PROC (待查) (待查) 四.程序的编译及链接 1.基本命令 . ESQLC 预编译命令 esql PROC 预编译命令 proc 2.编译语法 . ESQLC 中 make......Quotes Outside Proc. Setup - ...

weixin_39658019的博客 747

图像去模糊(二)——Richardson–Lucy算法

Richardson Lucy Algorithm(Richardson-Lucy算法详解及效果实例)

xueruhongchen的博客 3万+

Z-Image Turbo LoRA训练全流程:从数据标注到模型部署的保姆级指南(附ai-toolkit配置)

本文提供了一份详尽的Z-Image Turbo LoRA模型训练全流程指南,涵盖从数据准备、智能标注、参数调优到最终模型部署与Z-Image集成的每个环节。重点解析了使用ai-toolkit训练整合包进行高效训练的核心技巧与避坑方法,旨在帮助用户稳定训练出高质量的专属角色模型。

weixin_29088655的博客 962

oracle中proc在哪里,oracle proc配置

Oracle数据库安装好之后,在终端输入proc命令是不能直接使用的,需要修改一下配置文件才能直接直接使用proc命令1.修改用户目录下的.bashrc配置文件我的用户目录在/home/oracle下,oracle为用户,在/home/oracle目录下有一个.bashrc的隐藏文件,ctrl+H可以让隐藏文件显示出来让后用vi将其打开,命令为:vi .bashrc在里面添加上几个路径,如下:ex...

weixin_36261449的博客 611

如何使用Google Maps API爬取地理数据:详细教程与Python实现

Google Maps API 是一组服务的集合,允许开发者访问地图、地点、路线等地理信息。:将地址转换为地理坐标,或将地理坐标转换为地址。:计算两点之间的行车路线、步行路线等。Places API:获取附近的地点、商店、餐馆等。:计算多个地点之间的距离和时间。在接下来的代码中,我们将结合这些 API,展示如何获取并处理地理数据。本文详细介绍了如何使用 Google Maps API 获取地理数据,涵盖了从地址转经纬度、获取地点详情、计算路线、计算多个地点的距离与时间等多个功能。

2201_76125261的博客 733

oracle proc编程 fetch,ORACLE数据库PROC编程的一些经验

ORACLE数据库PROC编程的一些经验第 1 章概述PROC是Oracle数据库提供的编程接口之一,其应用十分的广泛,本文通过一个具体的例子,介绍PROC编程的一些经验及应注重的地方。例子程序:EXEC SQL INCLUDE sqlca;/*RELEASE_CURSOR=YES使PROC在执行完后释放与嵌入SQL有关资源*/EXEC ORACLE OPTION (RELEASE_CURSOR ...

weixin_36185512的博客 274

组基轨迹建模 GBTM的介绍与实现(Stata 或 R)

组基轨迹建模(Group-Based Trajectory Modeling,GBTM)(旧名称:Semiparametric mixture model)历史:由DANIELS.NAGIN提出,发表文献《Analyzing Developmental Trajectories:A Semiparametric,Group-Based Approach》GBTM能够将一群人的轨迹分类并生成数个具有代表性的运动轨迹模型,然后对每个轨迹模型进行分析,以了解人们的运动特征、生理水平和风险等级等。

三分钟热度 1万+

基于FPGA的UDP 通信(一)

手头的FPGA开发板上有一个千兆网口,最近准备做一下以太网通信的内容。本文先介绍基本的理论知识。 FPGA芯片型号:xc7a35tfgg484-2 网口芯片:RTL8211 网络接口:RJ45

记录所学,分享知识,结识挚友 8358

oracle proc编程 fetch,ORACLE数据库PROC编程经验介绍

ORACLE数据库PROC编程经验介绍--------------------------------------------------------------------------------2002-3-1  作者:风沙 【类别:编程语言及工具】PROC是ORACLE数据库提供的编程接口之一,其应用十分的广泛,本文通过一个具体的例子,介绍PROC编程的一些经验及应注意的地方。例子程序:...

weixin_30608641的博客 451

RK3568平台开发系列讲解:Linux wifi的调试

查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。

内核笔记 166

vs2019 下oracle proc配置

proc集成到vs2019proc配置中包含vs2019头文件设置demo.pc 属性 proc集成到vs2019 需要添加 :.proc.exe, precomp头文件目录和库文件目录 ,oci头文件和库文件目录 及precomp动态库 添加proc.exe 目录 默认安装Oracle时添加了环境变量,可以不用添加。工程项目右键–>属性–>配置属性–> vc++目录–>常规–>可执行文件目录 头文件目录 工程项目右键–>属性–>配置属性–> vc+.

u012516419的博客 1152

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Oracle Proc开发之Makefile的编写模板

Oracle的数据库开发中需要用到Proc,Proc就是嵌入式C 本文主要介绍的是Oracle数据库开发,Linux下Proc的Makefile示例: 1 .SUFFIXES: .c .o 2 3 CC=gcc 4 PROC=proc 5 6 PROCSRCS=oracle.pc 7 SRCS=$(PROCSRCS:.pc=.c) 8 OBJS=...

asdfghjkl978564的博客 241

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

oracle proc命令选项,ORACLE数据库PROC编程经验介绍

ORACLE数据库PROC编程经验介绍PROC是ORACLE数据库提供的编程接口之一,其应用十分的广泛,本文通过一个具体的例子,介绍PROC编程的一些经验及应注意的地方。例子程序:#include#include#include#include#includeEXEC SQL INCLUDE sqlca;/*RELEASE_CURSOR=YES 使PROC 在执行完后释放与嵌入SQL有关资源*/ ...

weixin_30418751的博客 621

oracle proc编程 fetch,Oracle Proc编程性能优化经验

Proc 是Oracle提供的一种数据库操作的AP。它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难。因为这些问题导致程序员平时开发中会出现一些Proc操作存在效率低下的情况,本文介绍一些Proc一些编译经验,希望能给大家提供参考。下面以一个简单需求进行举例说明:要求把DB1里面一张数据表tbl_hch_test的数据导出到DB2的同名表。最快...

weixin_28314575的博客 193

oracle end proc,初学者Oracle数据库:Proc和Proc++的使用和示例

一.什么是pro程序1.1通过在过程化编程语言中 嵌入sql语句开发出的应用程序叫做pro程序。1.2为什么要使用proc/c++想使用c或者c++ 这种高效的语言 成为访问oracle数据库的工具。sql语句是嵌入在c 或者c++ 语言上c 和 c++ 是宿主语言二.proc 程序 和c 相同点和不同点需要导入头文件 就导入头文件需要定义函数 就定义函数需要定义变量 就定义变量不同点需要在操作数...

weixin_31193137的博客 1163

oracle proc配置

Oracle数据库安装好之后,在终端输入proc命令是不能直接使用的,需要修改一下配置文件才能直接直接使用proc命令 1.修改用户目录下的.bashrc配置文件    我的用户目录在/home/oracle下,oracle为用户,在/home/oracle目录下有一个.bashrc的隐藏文件,ctrl+H可以让隐藏文件显示出来    让后用vi将其打开,命令为:    vi .bashr

z507263441的专栏 4811

Oracle数据库开发(二).Linux下配置使用ProC

Oralce数据库开发(二).Linux下配置使用ProC20070606 草木瓜一、提要    上文简单介绍了Windows下ProC配置开发,这次我们使用Linux平台再次配置Oracle ProC开发环境(RedHat Linux 9 + Oracle 92)。    《ORACLE数据库开发(一).Windows下配置使用ProC》和《ORACLE数据库开发(二).Linu

草木瓜 6861

oracle proc/c++,初学者Oracle数据库:Proc和Proc++的使用和示例

一.什么是pro程序1.1通过在过程化编程语言中 嵌入sql语句开发出的应用程序叫做pro程序。1.2为什么要使用proc/c++想使用c或者c++ 这种高效的语言 成为访问oracle数据库的工具。sql语句是嵌入在c 或者c++ 语言上c 和 c++ 是宿主语言二.proc 程序 和c 相同点和不同点需要导入头文件 就导入头文件需要定义函数 就定义函数需要定义变量 就定义变量不同点需要在操作数...

weixin_42524013的博客 655

oracle 数据用例导入,PROC简单使用用例--VC连接ORACLE

PROC简单使用用例--VC连接ORACLE操作系统:windows 7数据库版本:oracle 10gVS版本:VS2010前言:连接ORACLE的方式有很多,此处仅以PROC为例,说明如何连接oracle,有不妥之处,望诸位看官指出,学习共进。一、安装oracle 10g对应的客户端版本。注意事项:做好客户配置,以本机为例:D:\oracle\product\10.2.0\client_2\N...

weixin_39527487的博客 250

ProC连接Oracle

一段简单的ProC连接Oracle的代码: int connectDb(){   EXEC SQL BEGIN DECLARE SECTION;     char username[20];     char password[20];     char connect_string[20];   EXEC SQL END DECLARE SECTION;    strcpy(userna

中尉 810

Linux下Oracle的Proc学习笔记

Proc的make特别复杂,但是基本都一样,一个模板搞定所有 .SUFFIXES: .c .o CC=gcc PROC=proc PROCSRCS=oracle.pc SRCS=$(PROCSRCS:.pc=.c) OBJS=$(SRCS:.c=.o) ORACLE_HOME=/opt/oracle/product/11.2.0 ORAFLAGS1=/usr/include/linux O

HelloNiGeSB的博客 2618
上一篇: 标准 oracle 存储过程 模板
下一篇: oracle proc
天天实习
博客等级 码龄21年 15粉丝 382原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值