navicat oracle存储过程,Navicat 运行 Oracle 存储过程示例

navicat oracle存储过程,Navicat 运行 Oracle 存储过程示例navicat存储过程界面功能点击运行时,会弹出窗口填入输入参数。使用Navicat创建存储过程在函数位置,右键新建函数,OUT参数没有默认值,写了也没用。软件自动生成存储过程框架,然后人去补充“声明变量”和“主体”部分,注意存储过程名称可以用引号,也可以不用引号。Navicat运行存储过程方法一:使用Navicat软件界面功能方法二:在查询界面创建变量并调用存储过程Orac…

大家好,又见面了,我是你们的朋友全栈君。

navicat 存储过程界面功能

点击运行时,会弹出窗口填入输入参数。

2550042bf0530919756133474590f1a6.png

使用Navicat创建存储过程

在函数位置,右键新建函数,

76e29b7c350ece8441bf04d6b177b48d.png

5bf305935c636d70a4c6976441af6297.png

OUT参数没有默认值,写了也没用。

30916b5514dc85b0c53d85f9193c4f30.png

软件自动生成存储过程框架,然后人去补充“声明变量”和“主体”部分,

注意存储过程名称可以用引号,也可以不用引号。

f2ac28ecad6ed9c9b59a8912253d273d.png

Navicat 运行存储过程

方法一:使用 Navicat 软件界面功能

2550042bf0530919756133474590f1a6.png

方法二:在查询界面创建变量并调用存储过程

5ff7a670ef18c776f0146d511edc76a3.png

Oracle存储过程内部定义变量:“变量名 数据类型(大小)”,举例:temp NUMBER(12);

Oracle存储过程外部定义变量(在查询界面):

declare

变量名1  数据类型1(大小);

变量名2  数据类型2(大小);

注意定义变量的方法和调用存储过程的方法:

declare

idnum VARCHAR2(100) ; –输入参数

out_gender clob; –输出参数,BLOB和CLOB都是大字段类型,BLOB按二进制来存储的,CLOB直接存储文字

BEGIN

DBMS_OUTPUT.ENABLE(buffer_size => null) ; –设置缓存大小不受限制

idnum := ‘1’; –赋值

–调用存储过程,TEST_SELECT3 为存储过程的名字

TEST_SELECT3(idnum,out_gender);

dbms_output.put_line(out_gender); –输出结果

end;

分享:CLOB与BLOB的区别及用途:https://blog.csdn.net/qq_36544760/article/details/82665199

错误

[Err] ORA-20000: ORU-10027: buffer overflow, limit of 20000 bytes

缓存溢出。 使用dbms_output.put_line(变量)时报出的错误,从上面也可以知道dbms_output.put_line默认的缓存大小20000bytes 。

解决方法:在调用Oracle输出语句之前,先调用 DBMS_OUTPUT.ENABLE(buffer_size => null),表示输出buffer不受限制。

分享几个存储过程示例

如下存储过程包含了声明变量、变量赋值、入参、出参、CASE WHEN语句、游标等基础用法。

示例一

注意 Oracle 中,in out 要分开写,

Oracle 存储过程变量声明格式: 变量名 数据类型(长度); (数据类型一定要加长度)

赋值语句格式:变量 :=值,将值赋值给变量。

CREATE OR REPLACE

PROCEDURE TEST_EXCHANGE(a in out int,b in out int)

as

temp NUMBER(12);

begin

temp := a;

a := b;

b := temp;

end ;

示例二

表结构及数据

932258414892811d46275ab701e4554e.png

注意

表中SNO是NUMBER数据类型,但是存储过程传参是VARCHAR2,依然可以进行比较运算;

DEFAULT设置默认值;

rowData TEST_STUDENT%rowtype; 将表TEST_STUDENT一行数据的格式定义变量;

select * into 变量,是把查询出来的值赋值给变量,

注意case when 写法。

CREATE OR REPLACE

PROCEDURE “TEST_CASE” (idnum IN VARCHAR2 DEFAULT ‘1’, gender OUT VARCHAR2)

AS

rowData TEST_STUDENT%rowtype;

BEGIN

select * into rowData from TEST_STUDENT where SNO=idnum;

case rowData.GENDER

when 1 then

dbms_output.put_line(‘女人’);

gender :=’女人’;

when 2 then

dbms_output.put_line(‘男人’);

gender :=’男人’;

else

dbms_output.put_line(‘人妖’);

gender :=’人妖’;

end case;

END;

输出结果展示:

第一行 是 “dbms_output.put_line(‘女人’);”打印语句打印出来的,

第二行是输出参数。

68d7e7268dbf4dea2050b009ca5ac78d.png

示例三

CREATE OR REPLACE

PROCEDURE TEST_SELECT(

IN_SNO in NUMBER,

OUT_SNAME out varchar2,

OUT_SAGE out NUMBER

) AS

BEGIN

SELECT SNAME,SAGE

into OUT_SNAME,OUT_SAGE

FROM TEST_STUDENT WHERE SNO = IN_SNO;

END;

示例四

CREATE OR REPLACE

PROCEDURE TEST_SELECT4(DEPTID in NUMBER)

AS

–游标的定义

Cursor test_cursor is

select department_id, job_id, name, hire_date

from TEST_EMPLOYEES where department_id = DEPTID;

BEGIN

for rowData in test_cursor

loop

exit when test_cursor%notfound;

dbms_output.put_line(‘数据是:’||rowData.job_id);

end loop;

END;

示例五

CREATE OR REPLACE

PROCEDURE TEST_UPDATE

AS

v_rows NUMBER;

BEGIN

–更新数据

UPDATE TEST_EMPLOYEES SET SALARY = 30000

WHERE department_id = 1 AND job_id = ‘AD_VP’;

–获取默认游标的属性值

v_rows := SQL%ROWCOUNT;

DBMS_OUTPUT.PUT_LINE(‘更新了’||v_rows||’个雇员的工资’);

–回退更新,以便使数据库的数据保持原样,如果要提交用commit;

rollback;

END;

附Java调用Oracle存储过程返回结果集—从建表、存储过程到调用的详细过程:

https://blog.csdn.net/qiudechao1/article/details/98876509

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160893.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android错误之Unable to resolve target ‘Google Inc.:Google APIs:6’

    在导入一个项目是,出现Unable to resolve target ‘Google Inc.:Google APIs:6’ 按下面方式解决: 修改目录下的project.property文件内容为target=Google Inc.:Google APIs:16(在这里他本来可能是其他版本号,不用管它,只需要改成你所导入的包的版本就行,比如我这里已经导入就是api1

    2022年3月10日
    47
  • Flume对接Kafka详细过程[通俗易懂]

    Flume对接Kafka详细过程[通俗易懂]一、为什么要集成Flume和Kafka一般使用Flume+Kafka架构都是希望完成实时流式的日志处理,后面再连接上Storm/SparkStreaming等流式实时处理技术,从而完成日志实时解析的目标。如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,从广义上理解,把它当做一个数据库,可以存放一段时间的数据。因此数据从数据源到flume再到Kafka时,数据一方面可以同步到HDFS做离线计算,另一方面可以做实时计

    2022年6月23日
    33
  • 怎么卸载电脑上的mysql_mysql installer

    怎么卸载电脑上的mysql_mysql installer如何完美的卸载掉Mysql?按以下几个步骤去执行。步骤一确认你的mysql服务是关闭的状态,不然卸载不干净。在我的电脑(计算机)–管理–服务和应用程序–服务,找到mysql把状态关闭。步骤二在控制面板中卸载mysql软件。步骤三卸载过后删除C:ProgramFiles(x86)\MySQL该目录下剩余了所有文件,把mysql文件夹也删了。因为我的系统是64位,把软件安装的位置是E…

    2022年9月28日
    2
  • zookeeper入门教程_ZooKeeper的事件机制原理

    zookeeper入门教程_ZooKeeper的事件机制原理zookeeperwatcher架构zookeeper 配置中心分布式ID分布式锁集群搭建数据一致性协议:zab协议Zookeeper Leader选举Observer角色及其配置watcher架构客户端首先将Watcher注册到服务器,同时将Watch对象保存到客户端的Watch管理器中。当Zookeeper服务器监听到的数据发生变化时,服务器会通知客户端,接着客户端的Watch管理器会触发相关的Watcher来回调响应处理逻辑,从而完成整体的数据发布/订阅流程。javaAPIJava

    2022年8月9日
    6
  • 手把手教你搭建Android开发环境

    手把手教你搭建Android开发环境搭建开发环境,是学习一门技术的开始。参照网上的教程,整理了一下。进行Android开发应用开发时,首先需要有JDK和AndroidSDK的支持,还需要开发工具。在AndriodStudio2.2开始,安装AndroidStudio时,会自动安装JDK和AndroidSDK。下载网址:https://developer.android.google.cn/studio/一、进入网址,点击下载安卓工作室(原英文版,翻译后的界面了)二、点击下载后,出现协议界面,勾选同意,下载。三、双击刚

    2022年7月23日
    10
  • stm32蓝牙模块控制小车_51单片机蓝牙控制小车

    stm32蓝牙模块控制小车_51单片机蓝牙控制小车STM32库函数开发系列文章目录第一篇:STM32F103ZET6单片机双串口互发程序设计与实现第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案文章目录STM32库函数开发系列文章目录前言一、最简单DIY基于STM32单片机的蓝牙智能小车设计方案是什么?二、使用步骤1.准备硬件2.准备一个串口通信的代码3.修改源码三、运行与调试总结前言    daodanjishui物联网核心原创技术之最简单DIY基于STM32单片机的蓝牙智能小车设计方案。    市面上有各种开源STM3

    2022年10月10日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号