oracle 存储过程

create or replace procedure PRO_ME_TEST(parm_name string) as
  parm_unit_start string(2) := '09';
begin
  if parm_name = 900 then
    begin
      parm_unit_start := '90';
    end;
  end if ;
  insert into jhvgate_parm_dict(parameter_name, unit) values(parm_name, parm_unit_start);

end PRO_ME_TEST;

 

  • 语句块定义:
    decalre   
  1. -- 变量声明   
  2. var1 number(2);                -- 仅声明   
  3. var2 char(2) := '11';          -- 在声明的同时初始化   
  4.   
  5. begin  
  6.         -- 语句   
  7. end-- 语句块结束  

 if 语句

  • Sql代码  
  1. if a = 1 or b = 2 then  
  2.   
  3. elsif c = 3 then  
  4.   
  5. else  
  6.   
  7. end if;  

case 语句

case语句如果作为分支控制语句,最后结束语句是end case,如果是作为select语句里的控制语句则只需要end。

Sql代码   
  1. declare  
  2. num number(10) := 1;   
  3. begin  
  4.     case    
  5.         when num = 0 then dbms_output.put_line( 'zero');   
  6.         when num = 1 then dbms_output.put_line( 'one');   
  7.         else  dbms_output.put_line( 'default');   
  8.     end case;   
  9.        
  10.     case num   
  11.         when 0 then dbms_output.put_line( 'zero');   
  12.         when 1 then dbms_output.put_line( 'one');   
  13.         else  dbms_output.put_line( 'default');   
  14.     end case;   
  15. end;  

 for 循环

for循环主要有两个用处。


1、 循环一个范围
格式:for i in [start .. end] loop ... end loop;

Sql代码   
  1. for i in 0..9 loop   
  2.     dbms_output.put_line('i:' || i);   
  3. end loop;  


2、遍历隐式游标

隐式游标的好处是不需要手动关闭,方便

Sql代码   
  1. for currow in (   
  2.    select t.col1, t.col2   
  3.    from tableName t   
  4.    where ...   
  5. ) loop   
  6.     if currow.col1 = 0 then  
  7.        return;    -- 中止sp,返回   
  8.    end if;   
  9. end loop;  

while 循环

Sql代码   
  1. isok := 9;   
  2. while isok >= 0 loop   
  3.       isok := isok - 1;   
  4.         
  5.       if isok = 8 then  
  6.          continue;                -- 与编程语言的 continue 语义一样,跳过当前循环的剩余语句,回到循环开始   
  7.       end if;   
  8.         
  9.       if isok = 4 then  
  10.          exit;                    -- 与编程语言的 break 语义一样,跳出循环   
  11.       end if;   
  12.   
  13.       dbms_output.put_line('isok:' || isok);   
  14. end loop;   
  15.   
  16. dbms_output.put_line('outside while loop .');  
  • 存储过程定义
Sql代码   
  1. create or replace procedure sp_name (   
  2.         -- 入参、出参列表, 逗号分隔。   
  3.         uid in varchar2,                          -- 不能带长度信息   
  4.         startDate in date,                        -- 第二个输入参数   
  5.         defaultVar in varchar2 default "",        -- 默认参数,如果不传,要注意参数的顺序   
  6.         isok out number,                          -- 输出参数   
  7.         result out varchar2                       -- 第二个输出参数   
  8. )   
  9. as  
  10. -- 变量声明,每个声明用分号结束。可以在声明的同时初始化   
  11. var1 varchar2(11);   
  12. var2 number(2) := 123;   
  13.   
  14. begin  
  15.         -- 字符串拼接用 ||   
  16.         dbms_output.put_line('isok:' || 'abc');   
  17.           
  18.         -- 调用其他存储过程   
  19.         sub_sp_name(param1, prarm2, outParam1, outParam2);   
  20.   
  21. end;        -- 存储过程结束  

函数定义

Sql代码   
  1. create or replace function func  (   
  2.         -- 入参、出参列表, 逗号分隔。   
  3.         uid in varchar2,                          -- 不能带长度信息   
  4.         startDate in date,                        -- 第二个输入参数   
  5.         defaultVar in varchar2 default "",        -- 默认参数,如果不传,要注意参数的顺序   
  6.         isok out number,                          -- 输出参数   
  7.         result out varchar2                       -- 第二个输出参数   
  8. )   
  9. return number      -- 定义返回类型   
  10. as  
  11. -- 变量声明,每个声明用分号结束。可以在声明的同时初始化   
  12. var1 varchar2(11);   
  13. var2 number(2) := 123;   
  14.   
  15. begin  
  16.         -- 字符串拼接用 ||   
  17.         dbms_output.put_line('isok:' || 'abc');   
  18.           
  19.   
  20.         return ret_val;   
  21. end;  

 存储过程与函数异同

1、两者定义类似,都可以带输入输出参数。
2、函数有返回值,存储过程没有。
3、函数的调用要在select语句里;而存储过程不用,可以独立调用。

  • 游标

隐式游标
隐式游标的好处是不需要手动关闭,方便

Sql代码   
  1. for currow in (   
  2.    select t.col1, t.col2   
  3.    from tableName t   
  4.    where ...   
  5. ) loop   
  6.     if currow.col1 = 0 then  
  7.        return;    -- 中止sp,返回   
  8.    end if;   
  9. end loop;  

 

显式游标

Sql代码   
  1. declare  
  2. isok integer;   
  3. v_event_id number(10);   
  4. v_isagain number(2);   
  5. v_rate number(2);   
  6.   
  7. v_sender char(11) := '13800138000';   
  8.   
  9. cursor cursorVar is select event_id, isagain, rate from call_event where sender = v_sender; -- 声明游标   
  10.   
  11.   
  12. begin  
  13.     open cursorVar;    -- 打开游标   
  14.     loop   
  15.          fetch cursorVar into v_event_id, v_isagain, v_rate;       -- 取值   
  16.          exit when cursorVar%notfound;                             --当没有记录时退出循环   
  17.          dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);   
  18.     end loop;   
  19.       
  20.     close cursorVar;   -- 关闭游标   
  21.       
  22.     --游标的属性有:%FOUND,%NOTFOUNRD,%ISOPEN,%ROWCOUNT;    
  23.     --%FOUND:已检索到记录时,返回true    
  24.     --%NOTFOUNRD:检索不到记录时,返回true    
  25.     --%ISOPEN:游标已打开时返回true    
  26.     --%ROWCOUNT:代表检索的记录数,从1开始    
  27. end;  

 带参数游标

Sql代码
 
declare  
  1. isok integer;   
  2. v_event_id number(10);   
  3. v_isagain number(2);   
  4. v_rate number(2);   
  5.   
  6. v_sender char(11) := '13800138000';   
  7.   
  8. cursor cursorVar(p_sender varchar2) is select event_id, isagain, rate from call_event where sender = p_sender; -- 声明游标   
  9.   
  10. begin  
  11.     open cursorVar(v_sender);    -- 打开游标,在括号里传参。   
  12.     loop   
  13.          fetch cursorVar into v_event_id, v_isagain, v_rate;       -- 取值   
  14.          exit when cursorVar%notfound;                             --当没有记录时退出循环   
  15.          dbms_output.put_line(v_event_id || ', ' || v_isagain || ', ' || v_rate);   
  16.     end loop;   
  17.       
  18.     close cursorVar;   -- 关闭游标   
  19. end;

 

【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【IEEE顶刊复现】水下机器人AUV路径规划和MPC模型预测控制跟踪控制(复现)(Matlab代码实现)内容概要:本文档聚焦于【IEEE顶刊复现】水下机器人AUV路径规划与MPC模型预测控制跟踪控制的研究,提供了完整的Matlab代码实现方案。内容涵盖AUV在复杂海洋环境下的路径规划算法设计与模型预测控制(MPC)的跟踪控制策略,重点复现了高水平期刊中的关键技术细节,包括动力学建模、约束处理、优化求解及控制反馈等环节。文档还附带多个相关科研方向的技术介绍与资源链接,突出其在智能控制与机器人领域的高仿真精度与学术参考价值。; 适合人群:具备一定自动化、控制理论或机器人学背景,熟悉Matlab/Simulink环境,从事科研或工程开发的研究生、高校教师及科研人员;尤其适合致力于路径规划、MPC控制、水下机器人系统开发等相关课题的研究者。; 使用场景及目标:①复现IEEE顶刊中关于AUV路径规划与MPC控制的核心算法;②深入理解MPC在非线性系统中的应用机制与优化求解过程;③为水下机器人、无人系统等方向的科研项目提供可运行的代码基础与技术参考;④辅助论文写作、项目申报与仿真验证。; 阅读建议:建议结合文档中提供的网盘资源(如YALMIP工具包、完整代码等)进行实践操作,重点关注MPC控制器的设计参数设置与路径规划算法的实现逻辑,同时可参考文中列举的其他研究方向拓展思路,提升科研效率与创新能力。
代码下载地址: https://pan.quark.cn/s/1b5b026cbb57 分类类别不平衡问题--python篇 # 一、什么是类不平衡 ## 在分类中经常会遇到:某些类别数据特别多,某类或者几类数据特别少。 如二分类中,一种类别(反例)数据特别多,另一种类别(正例)数据少的可怜。 如银行欺诈问题,客户流失问题,电力盗窃以及罕见疾病识别等都存在着数据类别不均衡的情况。 二、为什么要对类不平衡进行特殊处理 ## 传统的分类算法旨在最小化分类过程中产生的错误数量。 它们假设假阳性(实际是反例,但是错分成正例)和假阴性(实际是正例,但是错分为反例)错误的成本是相等的,因此不适合于类不平衡的数据。 有研究表明,在某些应用下,1∶35的比例就会使某些分类方法无效,甚至1∶10的比例也会使某些分类方法无效。 如果数据存在严重的不平衡,预测得出的结论往往也是有偏的,即分类结果会偏向于较多观测的类。 三、提升不平衡类分类准确率的方法 ## 提升不平衡类分类准确率的方法有三大类:采样、阈值移动、调整代价或权重。 avatar 1、采样 ### 1 过采样 #### 过采样基本思想就是通过改变训练数据的分布来消除或减小数据的不平衡。 过采样有随机过采样、基于聚类的过采样、信息性过采样(SMOTE)三大类方法。 随机过采样:通过增加少数类样本来提高少数类的分类性能 ,最简单的办法是随机复制少数类样本。 基于聚类的过采样:K-Means聚类算法独立地被用于少数和多数类实例,之后,每个聚类都过采样使得相同类的所有聚类有着同样的实例数量。 avatar 信息性过采样--SMOTE 利用KNN技术,对于少数类样本a, 随机选择一个最近邻的样本b, 然后从a与b的连线上随机选取一个点c作为新的...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值