navicat 存储过程界面功能

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

使用Navicat创建存储过程

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

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

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

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

Navicat 运行存储过程

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

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

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

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

declare

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

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

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

declareidnumVARCHAR2(100) ; --输入参数

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

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

idnum := '1'; --赋值

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

TEST_SELECT3(idnum,out_gender);

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

end;

错误

[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 ;

示例二

表结构及数据

注意

表中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)ASrowData TEST_STUDENT%rowtype;BEGIN

select * into rowData from TEST_STUDENT where SNO=idnum;caserowData.GENDERwhen 1 thendbms_output.put_line('女人');

gender :='女人';when 2 thendbms_output.put_line('男人');

gender :='男人';elsedbms_output.put_line('人妖');

gender :='人妖';end case;END;

输出结果展示:

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

第二行是输出参数。

示例三

CREATE OR REPLACE

PROCEDURETEST_SELECT(

IN_SNOin NUMBER,

OUT_SNAME outvarchar2,

OUT_SAGE outNUMBER)AS

BEGIN

SELECTSNAME,SAGEintoOUT_SNAME,OUT_SAGEFROM TEST_STUDENT WHERE SNO =IN_SNO;END;

示例四

CREATE OR REPLACE

PROCEDURE TEST_SELECT4(DEPTID in NUMBER)AS

--游标的定义

Cursor test_cursor is

selectdepartment_id, job_id, name, hire_datefrom TEST_EMPLOYEES where department_id =DEPTID;BEGIN

for rowData intest_cursor

loopexit when test_cursor%notfound;

dbms_output.put_line('数据是:'||rowData.job_id);endloop;END;

示例五

CREATE OR REPLACE

PROCEDURETEST_UPDATEASv_rowsNUMBER;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存储过程返回结果集---从建表、存储过程到调用的详细过程:

oracle存储过程可以回退吗,Navicat 运行 Oracle 存储过程示例相关推荐

  1. oracle 索引 种类,详解 Navicat for Oracle 索引类型

    Normal normal索引不施加限制到列值. Unique unique索引表示没有表的两行在键列有重复值. Bitmap bitmap(位图)索引为每个不同的键创建一个bitmap,而不是个别地 ...

  2. oracle 存储过程 状态,查看ORACLE中正在运行的存储过程 | 学步园

    1.如何查看ORACLE中正在运行的存储过程 select owner,name from v$db_object_cache where type like '%PROCE%' and locks ...

  3. 用 Navicat for Oracle 管理 Oracle10g/11g 数据库

    Navicat for xxx 是一个优秀的数据库管理客户端,有 MySQL.Oracle 等版本.建议大家最好用 Enterprise 版本,功能全面一些,但较之于免费的 Lite 版,企业版可是要 ...

  4. Navicat for Oracle实现连接Oracle

    不知道为什么,从一开始,我就不喜欢Oracle,名字好听,功能强大,但总感觉"高不可攀";或许是因为我觉得其他的数据库就可以解决数据问题,不太了解Oracle的优势:而且它长得也不 ...

  5. [数据库] Navicat for Oracle基本用法图文介绍

    引自百度百科:Navicat for Oracle是一套超强的Oracle数据库系统管理工具.它有极具巧思的图形化用户界面(GUI),让你可以快速且容易的以安全且简单的方法建立.组织.存取及共享资讯. ...

  6. 【转】使用Navicat for Oracle新建表空间、用户及权限赋予

    首先.我们来新建一个表空间.打开Navicat for Oracle,输入相关的的连接信息.如下图: 填入正确的信息,连接后.我们点击面板上的"其他"下的选项"表空间&q ...

  7. oracle图形工具创建作业,oracle入门(2)—— 使用图形工具navicat for oracle

    [本文介绍] 本文将介绍如何使用图形工具navicat for oracle连接本地数据库 以及远程访问 服务器数据库. [下载地址] [11G版本访问本地数据库] 安装navicat for ora ...

  8. 阿里云 centos7静默安装oracle12c,使用navicat 连接oracle数据库

    阿里云 centos7静默安装oracle12c,使用navicat 连接oracle数据库 需要切换到阿里云镜像的,仅供参考 使用yum -y update更新软件 1. 关闭防火墙 systemc ...

  9. oracle在哪些系统运行,Oracle运行操作系统命令

    在Oracle 9i中,往往会出现要在存储过程中运行操作系统命令的情况.一般来说,利用Oracle Enterprise Manager设定作业时可以达到这个目的.但是由于OEM在设定作业缺乏灵活性, ...

最新文章

  1. nginx linux 安装
  2. PowerDesigner最基础的使用方法入门学习
  3. Linux之文件管理命令
  4. 8、python基础知识-用户输入
  5. 2009年上半年网络工程师考试下午试卷参考答案(二)
  6. MobileFormer-在目标检测任务上怒涨8.6 AP,微软新作MobileFormer
  7. ilm 和dlm差异_Oracle 的信息生命周期管理工具(ILM assistant)
  8. Linux驱动开发流程
  9. 函数发生器的使用方法
  10. matlab 双曲线拟合,利用MATLAB进行logistic曲线拟合
  11. Ruby 之Gem kaminari
  12. 4G终端附着时如何选择SGW和PGW
  13. 绘画教程:伤口疤痕应该怎么画?如何画出皮肤质感?
  14. iOS 开发之使用苹果测试工具 TestFlight (进行内部和外部测试)
  15. win10系统使用VMware偶尔出现蓝盘的问题解决
  16. 风影墙纸,一天看N回。
  17. 终极方法--解决Tomcat启动闪退
  18. 南红镶嵌的方法有哪些
  19. 天极副总裁李大学谈网站创新
  20. Google Reader“寿终正寝”,哪些软件可取而代之?

热门文章

  1. IIS7 应用程序池自动回收关闭的解决方案
  2. CentOS 7下mysqld服务启动失败终极解决方案
  3. ora-01489 字符串连接的结果过长 解决方案
  4. 根据列值删除Pandas中的DataFrame行
  5. 如何使用print()打印类的实例?
  6. oracle Expdp带条件,Oracle 11g expdp中query参数的使用
  7. 的采样方式_DR803M4水质自动采样器(岸边站自动排空型)
  8. STM32:GPIO四种输入输出模式。
  9. python创建线程函数_Python多线程编程(三):threading.Thread类的重要函数和方法...
  10. 继承extends(Java)