navicat oracle存储过程,Navicat 运行 Oracle 存储过程示例
navicat 存储过程界面功能
点击运行时,会弹出窗口填入输入参数。
使用Navicat创建存储过程
在函数位置,右键新建函数,
OUT参数没有默认值,写了也没用。
软件自动生成存储过程框架,然后人去补充“声明变量”和“主体”部分,
注意存储过程名称可以用引号,也可以不用引号。
Navicat 运行存储过程
方法一:使用 Navicat 软件界面功能
方法二:在查询界面创建变量并调用存储过程
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 ;
示例二
表结构及数据
注意
表中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('女人');”打印语句打印出来的,
第二行是输出参数。
示例三
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
navicat oracle存储过程,Navicat 运行 Oracle 存储过程示例相关推荐
- oracle 存储过程 状态,查看ORACLE中正在运行的存储过程 | 学步园
1.如何查看ORACLE中正在运行的存储过程 select owner,name from v$db_object_cache where type like '%PROCE%' and locks ...
- oracle存储过程可以回退吗,Navicat 运行 Oracle 存储过程示例
navicat 存储过程界面功能 点击运行时,会弹出窗口填入输入参数. 使用Navicat创建存储过程 在函数位置,右键新建函数, OUT参数没有默认值,写了也没用. 软件自动生成存储过程框架,然后人 ...
- oracle 9i aix 迁移,Oracle 9i 在AIX上的安装 (转)
■可以删除原有的.cpio文件腾出剩余的空间 2.检查要求 检查附录1的表格系统要求的内容 3.预安装 ■完成安装任务 □以Root用户登录 □建立目录/oracle,此目录下至少有3G以上的空间,见 ...
- oracle数据库存储函数,Oracle数据库存储过程
一.定义 所谓存储过程,就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.使用的时候,用户通过指定已经定义的存储过程名字并给相应的存储过程参数来调用并执行它,从 ...
- Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL
Oracle 存储过程学习 目录 Oracle 存储过程........................................................................ ...
- oracle存储过程 论文,Oracle中基于Java的存储过程开发_计算机论文
论文导读::存储过程是一种数据库对象,将执行计划存储在数据库的服务器中,它的执行速度比独立执行同样的程序要快.任何一个设计良好的数据库应用程序都应该用到存储过程.存储过程可以使得对数据库的管理.显示关 ...
- oracle存储while用mysql_oracle存储过程while
Oracle下我个人认为有些事情不一定用存储过程,但还是说一下 oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN ...
- 利用oracle执行系统命令,利用oracle存储过程执行操作系统命令(转)
以下方法在WINNT,LINUX下的oracle9i上测试通过,java过程调用系统命令 首先给使用java存储过程的用户授予一定的权限 <>表示所有文件,也可以单独指定文件. r w e ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- oracle 存储过程写文件,Oracle写本地文件
Oracle写本地文件是指写到运行Oracle的主机上,而不是运行该脚本的机器上. 说起来有点拗口,实际上就是无论在哪里执行这个过程,生成的文件始终都是在服务器上的. 下面过程实现了这个功能: log ...
最新文章
- 获取当前脚本目录路径问题汇总
- 139邮箱发送邮件时候,zmail.server(from_mail,pwd) 该pwd可以不用是授权码,是密码就可以
- 重磅!这个 GitHub 汇总了 300 道 Python 面试题!
- const_iterator简单介绍
- BibTex (.bib) 文件的凝视
- MongoDB解决“Error parsing YAML config file: yaml-cpp: error at line 2, column value(安装服务)
- linux signal 符号表6,gdb调试信息__000_linux-gnu_00000000_002_rw-p__169IT.COM
- mysql format 格式化 返回值
- java找不到配置文件_Java项目读取配置文件时,找不到指定的文件???
- 关于fsockopen pfsockopen函数被禁用的解决方法
- 排序算法1:最快最简单的排序——桶排序(C++版本)
- 【语音处理】基于matlab GUI汉宁窗FIR陷波滤波器语音信号加噪去噪【含Matlab源码 1711期】
- 【C++】教大家在七夕new一个对象
- ISO光盘镜像导入到U盘的方法
- 从字节中取出1bit数据
- 【网络安全】应用实践题(无答案)
- 非系统管理员打开Internet Information Services (IIS)管理器
- 推荐5款经过时间验证的神级软件
- 习题 5.11 有一行电文,已按下面规律译成密码:A-Z a-z即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。
- ACM模式各种输入整理(C++)
热门文章
- 关联分析法,超详解!进来秒懂!!
- 【jqxGrid】jqwidgets.createInstance()方法报错的一种解决方法
- wamp下载和使用PHPDocumentor
- 电视剧中的计算机学霸,电视剧中的九位学霸男神,真希望身边有位颜值又高学习又好的男生...
- 微信/钉钉电脑端登录后手机端不再提醒
- IDEA 奇淫 插件
- 本地机房连接阿里云专有网络VPC构建混合云解决方案
- ppt 计算机教学操作,电脑基本操作教学(原创).ppt
- C#发送邮件 SMTP
- java实现电子签名技术_h5实现电子签名