Oracle学习交流(4) -----开发子程序和包

Oracle 从入门到精通系列 - 交流社区 阅读详情
 

--创建存储过程
create or replace procedure proc_first
as
begin
   dbms_output.put_line('hello world!');
end;

begin
proc_first;
end;

drop procedure proc_first

--带参数的存储过程 PS:括号内是参数,BEGIN前是变量
create or replace procedure proc_Second
(empid number) --is或as前是输入或输出参数
is
tempsalary number;--局部变量
begin
select sal into tempsalary from emp where empno = empid;
dbms_output.put_line(tempsalary);
end;

begin
  proc_Second(empid => 7499);--命名传参,可混乱
  proc_Second(7499);--匿名传参,顺序必须一直
  end;
drop procedure proc_Second;

--带输出参数的存储过程
create or replace procedure proc_third(
       empid number,
       v_salary out number  --表示输出参数
)as
begin
  select sal into v_salary from emp where empno = empid;
end;

--调用带OUT的参数.备注,参数需在括号内,不需要用到OUT
declare
vsalary number;
begin
  proc_third (7499,vsalary);
  dbms_output.put_line(vsalary);
end;

drop procedure proc_third;


--INOUT存储过程
create or replace procedure proc_four(
       paramOne in out number,--输入输出
       paramTwo in out number
)
as
v1 number;
v2 number;
begin
  v1:=paramOne*paramTwo;
  v2:=Mod(paramOne,paramTwo);
  paramOne:=v1;
  paramTwo:=v2;
end;

--调用
declare
v1 number :=10;
v2 number :=2;
begin
  proc_four(paramOne=>v1,paramTwo=>v2);
  dbms_output.put_line(v1||'       '||v2);
end;

drop procedure proc_four;

--函数
create or replace function firstfun return varchar2 as --必须先定义返回类型在as后才能声明局部变量
vuser varchar2(10);
begin
  select username into vuser from user_users;--查询当前登录用户
  return vuser;
end;

--调用
begin
dbms_output.put_line(firstfun);
end;


--有IN参数的函数
create or replace function SecondFun(empid emp.empno%type) return emp.ename%type as
empName emp.ename%type;
begin
  select ename into empName  from emp where emp.empno=empid;
  return empName;
end;

--调用
declare
empid emp.empno%type;
begin
  dbms_output.put_line(SecondFun(7499));
end;

 

--有OUT参数的函数
create or replace function ThirdFun(
       empId emp.empno%type,
       empName out emp.ename%type
) return emp.sal%type
as
Vsalary number;
begin
  select ename ,sal into empName ,Vsalary from emp where emp.empno=empId;
  return Vsalary;
end;
--调用
declare
ename emp.ename%type;
begin
  dbms_output.put_line(ThirdFun(&empid,ename));
  dbms_output.put_line(ename);
end;

 

--查询用户子程序和源代码
select * from user_source

select * from user_objects
--包
create or replace package my_page is   --is后边通常书写的是局部变量
g_empNo number;
procedure proc_updateSalary_employee(
          param_empNo number
  );
function fun_get_salary(param_empNo number) return number;
end my_page;

--包的身体
create or replace package body my_page as --as后必须是包头实现

procedure proc_updateSalary_employee(
  param_empNo number
  ) as
  begin
    update emp set sal=sal+1 where emp.empno=param_empNo;
  end;
 
 function fun_get_salary(param_empNo number) return number
   as
   salaryTemp number;
   begin
     select sal into salaryTemp from emp where emp.empno=param_empNo;
     return salaryTemp;
   end;
   end my_page;
  
  
 --调用
 begin
   dbms_output.put_line(my_page.fun_get_salary(7499));
   my_page.proc_updateSalary_employee(7499);
   dbms_output.put_line(my_page.fun_get_salary(7499));
 end;
 
 --授权
 grant execute  on my_page to hr;
begin
   dbms_output.put_line(scott.my_page.fun_get_salary(7499));
end;

Codex App 远程 SSH 连接 autodl 配置全攻略 SSH 远程连接是开发中常用的技术,通过加密通道实现本地与远程服务器的安全通信。其原理基于非对称加密和密钥对认证,确保数据传输安全。在 AI 开发场景中,远程连接能充分利用云端 GPU 算力,同时保留本地编辑器的流畅体验。autodl 作为主流算力云平台,支持通过 SSH 接入实例,但 Codex App 等工具需额外配置。本文详细讲解如何获取 autodl 的 SSH 接入信息、配置密钥登录、填写 Codex App 远程连接参数,并解决连接拒绝、权限报错等常见问题,帮助开发者高效搭建远程开发环境。 阅读详情

相关推荐

STM32H750实战:如何用CubeMX配置NAND Flash时序(附常见问题排查)

本文详细解析了STM32H750通过CubeMX配置NAND Flash时序的实战技巧,包括硬件连接、时序参数计算与优化策略,以及常见问题如RGB屏幕干扰、多片选冲突的解决方案。特别针对NAND Flash的时序配置和抗干扰设计提供了实用代码示例和优化建议,帮助开发者提升系统稳定性和性能。

weixin_29176179的博客 365

分享一下学习Oracle的经验

 分享一下学习Oracle的经验主持人: 由于时间的关系我们就不多讲了,最后一个问题我想让大家跟网友们分享一下学习Oracle的经验,包括推荐一些好的书。跟网友分享一下学习Oracle的经验。     石树斌: 我很早就接触Oracle了,从Oracle7版本就开始了,但是我觉得我做的比较杂,从应用开发、数据库、项目管理、销售等,很多都做。    我真正喜欢Oracle是2000年。200

daimin's BLOG 950

实测对比:DECIMER、Img2Mol、MolScribe,哪个化学结构识别工具更靠谱?

化学结构识别(CSR)工具的核心任务是将分子结构图像转换为SMILES(Simplified Molecular Input Line Entry System)表示。这一过程需要克服图像质量差异、绘制风格变化以及特殊基团识别等挑战。三款工具采用不同的技术路线:DECIMER:基于EfficientNetV2+Transformer架构,优势在于处理标准期刊文献中的分子图示Img2Mol。

weixin_32576389的博客 347

如何学习Oracle?

如何学习Oracle?经常有一些Oracle的初学者问到这个问题,这里算是一个统一答复。1、如果有一定的数据库基础,知道SQL是怎么回事,即使写不出来简单的SQL,但可以看动它们,你就可以跳到2。否则请先看一下数据库基础和SQL语言,不需要很深,更不需要去记忆那些复杂的SQL命令,这些可以留在以后边应用边学习、记忆。2、要想学好ORACLE,首先要学习ORACLE的体系结构,现在你不需

我心飞扬 1894

Redis【实战篇】---- 分布式锁-redission

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

是微风,是晚霞,是无可替代 1万+

【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目流程拆解

本文详细拆解了一个完整的Python数据科学项目流程,从爬取长沙二手房数据到房价预测模型构建。通过实战案例,介绍了数据爬取、清洗、可视化及模型优化的关键技巧,帮助开发者掌握Python在数据分析中的应用,提升程序开发能力。

weixin_30379531的博客 412

2024年oracle账号共享_oracle账号分享,网络安全开发技巧

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。各位小伙伴,在oracle官网下载JDK需要oracle账号,本人提供账号共享,方便大家下载,希望大家不要改密码,方便更多的人。之前有小伙伴改了密码,现在已恢复,希望大家别改密码了,方便大家。

m0_54903333的博客 1万+

SAP 中配置权限职责菜单并分配给用户的核心流程是:用PFCG 创建 / 维护角色(含菜单、事务码、权限)→ 生成权限参数文件 → 通过 SU01/SU10 将角色分配给用户

SAP权限配置核心流程:1)通过PFCG创建角色,配置菜单事务码及权限对象;2)生成权限参数文件;3)用SU01/SU10分配角色给用户。关键步骤包括:在PFCG中维护菜单结构、设置权限字段值、生成Profile,通过用户比较验证权限。批量分配可用SU10,特殊需求可创建复合角色或自定义权限对象。常见问题需检查权限缺失(SU53)、菜单分配及组织级别设置。流程简化为:创建角色→配置权限→分配用户→验证生效。

金牌架构师 1274

Oracle学习的经验谈

经常遇到朋友问oracle学习难不难,怎么才能成为高手等等,我想结合我的个人经验简单说几点: 1、打好基础,由浅入深          学习Oracle不能急于求成,寄希望于一天成为一个大侠。学习有个过程,应该由浅入深,在学习的过程中打好基础,这样在以后的学习中就能触类旁通,

newhappy的专栏 2万+

n8n AI高效工作流自动化 部署使用教程

摘要: n8n是一款开源可视化工作流自动化工具,结合AI能力可高效解决重复性任务。文章详细介绍了从Docker部署到实战应用的完整流程:1)通过Docker Compose自托管n8n,确保数据可控;2)以AI客服日报机器人为例,演示如何串联工单系统、ChatGPT和邮件通知,实现定时自动化;3)进阶搭建交互式AI助手,利用ToolsAgent节点调用业务API;4)整合向量数据库构建RAG知识库问答。关键建议包括:拆分复杂工作流、严格管理凭据、区分开发与生产环境,并建议从高频刚性需求(如日报生成)切入,逐

专注AI大模型,软件混淆,授权 267

SAP Fiori 个性化数据持久化实战:从 Personalizer 到 Variant 的完整设计思路

摘要:SAPUI5的Personalization服务用于持久化用户界面交互偏好(如表格列顺序、筛选条件),而非业务数据。它提供两种模式:Direct Mode适合单一实体存储,Container Mode支持多实体和变体管理。开发时需注意数据存储位置差异(本地调试用local storage,生产环境由前端服务器处理),避免与业务数据或Bookmark服务混淆。典型应用场景包括表格布局保存和查询方案管理,需根据需求选择模式。该服务能有效提升Fiori应用的用户体验连续性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 130

Oracle 存储过程、包、包体如何创建?

关注【郑大钱呀】【公】【众】【号】,我们一起交流,一起学习。 文章目录Oracle Live SQL存储过程如何创建一个存储过程查询存储过程调用存储过程方式一方式二方式三删除存储过程创建一个有入参的存储过程创建一个有返回值的存储过程创建IN OUT的存储过程在存储过程内部定义参数Oracle 包(Package)创建包头语法创建包体示例如下结尾 Oracle Live SQL 在学习存储过程之前,我们首先需要有一个Oracle的数据库,但是Oracle数据库比较大,有时候电脑稍差点就带不动,且安装还是比较繁

MicalChen的博客 1674

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 922

LINUX环境:MySQL和Oracle开机自启动_linux oracle_home_listner未设置

原因:dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=dbstart,dbstart为开机自启动脚本,让系统开机就去执行dbstart脚本文件,它会去读oratab文件,读到Y就会把对应的实例开机自启动。-rwxr-x—. 1 oracle oinstall 6088 1月 1 2000 dbshut。错误提示:ORACLE_HOME_LISTNER 没有设置。

2401_84240431的博客 801

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

致Oracle开发者的学习资源清单

开发者是越来越重要了。以前都叫码农,今天在优快云上看到一个新的称呼叫爱码士,。最近的客户交流,很多也都是和应用开发部门进行沟通。他们关注的问题包括SQL跑得慢如何知道问题所在,O...

杨建荣的学习笔记 1020

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Oracle学习资料分享(含教程、笔记、题库下载与学习方法)

当下最为流行的Oracle数据库技术全球有近半数的企业与组织在使用,那么应该怎么学习呢?本文介绍了Oracle学习的官方教程、学习笔记和课程实验文档以及考试题库资源,同时分享案例分析、脚本等精进技术的资源合集,同时为大家介绍了技术学习的根本方法、逻辑。

ToyaAkira00的博客 5238

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

oracle丢弃包,oracle的包 - 浮云飘飘的个人空间 - OSCHINA - 中文开源技术交流社区...

oracle_package.sqlpackage:简化应用程序设计,提高应用性能,而且可以实现信息隐藏,子程序重载等功能。包用于逻辑组合相关的PL/SQL types, variables, and subprograms。它由包头(package specification)和包体(package body)两部分组成。首先要建立包头,再建立包体。包头只用来定义公共组件。---包头语法crea...

weixin_39785970的博客 126

给新手学习ORACLE的建议

新手学习ORACLE的建议 今天在群里有人提议要给点学习ORACLE的建议,我就从自己学ORACLE这段时间(2004-11-10--至今)的一点心得。这只是个人的说法,不对的地方还请大家多指教!1、建立明确的目标  目标一定要明确,我当时第一个目标就是一个月时间内读完OCP教程,目标定了,那么接下来的学习就有了目标,不至于今天学点这个,明天学点那个。2、制定详尽的计划  目标定好以后就是实现目标

huangxf_2008的专栏 1612

新手学习ORACLE的建议

 转自中国oracle用户组论坛: http://www.cnoug.org/viewthread.php?tid=48054&extra=page%3D1今天在群里有人提议要给点学习ORACLE的建议,我就从自己学ORACLE这段时间(2004-11-10--至今)的一点心得。这只是个人的说法,不对的地方还请大家多指教!1、建立明确的目标  目标一定要明确,我当时第一个目标就是一个月时间内读

枫$叶的专栏 1216

Oracle 和 DB2 应用交流

Oracle 和 DB2 应用交流[@more@]Oracle 和 DB2 应用交流 ...

cmd53859的博客 107

学习交流

本人是一名大二的学生,很喜欢数据库方面的知识(目前也在做android开发),正在学习的路上,学习的过程虽然辛苦,但是对技术的热爱和对生活的提高时刻激励我们学习下去!找到志同道合的人一起学习是一大快事!我相信对学习的促进是十分巨大的。希望大家不嫌弃小弟是个菜鸟,一起学习交流oracle,Linux  相信和你们在一起,我会慢慢成长起来!感兴趣也可以加下这个群:ORACLE&&LINUX公社 4

diy_os的专栏 1284

oracle DBA学习方法交流

你想做什么数据库 Oracle? db2?我是做Oracle的 DB2帮不了你oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。 一、定位 oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Devel...

weixin_30904593的博客 186

Oracle主要学习资源绝对干货-DBA之路

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!                Oracle主要学习资

ugghhj的博客 3765

欢迎加入oracle学习群

本群是为初学ORACLE的朋友建立的,也热烈欢迎有经验朋友加入,只为了学习交流,共同进步 

chaofei2007的专栏 895

关于ORACLE 数据库学习的几点建议

最近在一个论坛中和人讨论了一通关于ORACLE学习的问题,结合我也算有10年的ORALCE 使用学习的经历给大家一点建议吧。 1、ORACLE数据库是一个非常庞大,非常精深的系统,要有长期抗战的准备,你指望能在一个月内学会入门那是可以的,但是你要买本24天精通ORACLE数据库这样不负责责任的书,并想通过他来掌握ORACLE,只能是痴人说梦;2、无论你是初学者,还是有一定层次的使用者,

wwwlh的专栏 1326

Oracle 部署及基础使用

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

2401_83974173的博客 1205
上一篇: Oracle学习交流(3) -----PL/SQL语言基础
下一篇: Oracle学习交流(5)---触发器和游标
PanderPeople
博客等级 码龄17年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值