Oracle 写存储过程的一个模板还有一些基本的知识点
我很少用Oracle,也算新手,不过其实入手没有那么难,下面只是一个基本知识,高手绕道,其实数据库基本是相同的,这里提供都是基本知识点
有一个Oracle溢出的问题,容易让新手怀疑到无所怀疑,其实就是在做除法的时候长度太长导致,所以要用一个round来解决这个新手注意不到问题
其他的确实没有什么可说的看注释
declare
vs_string VARCHAR2(2000);
vn_number NUMBER;
vc_cur SYS_REFCURSOR;
vl_row wx_supplier%ROWTYPE;
type type_wx_supplier is record( id NUMBER, name VARCHAR2(200) );
vv_row type_wx_supplier;
BEGIN
dbms_output.put_line('begin');
select wxs.* into vl_row from wx_supplier wxs where rownum=1;
dbms_output.put_line('end;');
end;
/* Cursor是游标类型,代表是数据集本身,只能在PL/SQL程序中关闭;可以通过游标FOR循环或者定义cursor来完成。 而sys_refCursor代表的是游标的引用,即数据集的引用地址,只能通过open for语句来完成。 两者的最大区别是后者可以将这个地址传递给其它程序。 问题:据说“ref cursor类型”也能够返回数据集,与sys_refCursor有什么关系? 回答: ref cursor是Oracle旧版本中使用的数据类型,用这种对象的缺点在于必须在包中定义;而现在用ys_refCursor类型, 可以直接使用。
参考定义 vs_exc_sql VARCHAR2(2000);
--执行结果判断动态语句 vn_count NUMBER;
--判断计数
type p_cursor is ref cursor;--老的orcal支持的游标
curold p_cursor;
cur SYS_REFCURSOR;
tablenamerow tablename%ROWTYPE; --表单数据行或是试图行
type rec is record ( id varchar2(200), name varchar2(200));
recdata rec;
//自定义行结构 参考语句
select count(1) into vn_count from tablename --获取计数数量
select NVL(fieldname, 'default') from tablename --提供默认值
SELECT sys_guid() INTO vs_form_to_id FROM DUAL; --获取guid 获取常数等方式需要一个空表
获取一行数据 execute immediate 只支持单条数据
EXECUTE IMMEDIATE 'select * from wk_my_bill where id in(select max(id) from wk_my_bill)' into vrowmybill; dbms_output.put_line(tablenamerow.id);
通过rownum 或max 实现取一条数据 select mb.* into tablenamerow from wk_my_bill mb where rownum=1; -- id in(select max(id) from wk_my_bill);
dbms_output.put_line(tablenamerow.id);
循环输出方式 OPEN cur FOR 后面可以接字符串,也可以接语句
OPEN cur FOR vs_result_sql;--'select * from v_tl_wk_action_codeinfo';
LOOP fetch cur into empdtl;
exit when cur%notfound;
dbms_output.put_line(empdtl.id);
END LOOP; CLOSE cur;
For in 只能是语句不能是字符串
For cu in (select * from v_tl_wk_action_codeinfo)
loop
dbms_output.put_line(cu.form_id);
end loop;
--using 可以给动态语句传值 :
1 更新或删除的记录变量 sql%rowcount execute immediate 'insert into dept values (:1, :2, :3)'
using 50, l_depnam, l_loc;
commit; --插入更新需要用commit rowtype 以外可以用结构来定义获取混合关联数据输出
type empdtlrec is record (id varchar2(200),
name varchar2(200),
need_remark varchar2(200),
remark_title varchar2(200)); empdtl empdtlrec; */
转载于:https://www.cnblogs.com/realso/p/7358842.html
Oracle 写存储过程的一个模板还有一些基本的知识点相关推荐
- oracle学习-存储过程返回一个值,和返回一个结果集
一.返回一个值 --创建存储过程create or replace procedure sp_hu_test(spcode in varchar2,spname out varchar2)is beg ...
- oracle中如何创建一个过程,如何开发ORACLE存储过程
一. 概述 Oracle存储过程开发的要点是: • 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程; • 在Oracle数据库中创建一个存储过程; • 在Oracle ...
- 过程 oracle 写在哪里,Oracle怎么写存储过程? 在什么地方写以及怎么调用?最好给个Sample 急(2)...
当前位置:我的异常网» Java Web开发 » Oracle怎么写存储过程? 在什么地方写以及怎么调用 Oracle怎么写存储过程? 在什么地方写以及怎么调用?最好给个Sample 急(2) www ...
- oracle的存储过程写法Oracle中如何写存储过程
Oracle的存储过程基本写法 Oracle存储过程简介: 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务 ...
- php 模板 自己,php自己写了一个模板
/* 作者: 牛哄哄 Q Q: 455703030 */ function template($template,$cacheFile,$set) { is_readable($template) | ...
- 精通 Oracle+Python 存储过程、Python 编程
调用数据库存储过程及其他感兴趣的高级 Python 编程功能. 对于涉及数据库的软件开发来说,有两种主流开发方法:一种是在应用程序中(对于三层体系结构,也可以是在中间件中)实现所有业务逻辑,另一种是在 ...
- oracle 删除补全日志组_浅谈Oracle 20c ASM文件组模板技术
首先,Oracle ASM file group 是一组文件,它们共享相同的属性和特征.文件组最主要的好处是在相同的磁盘组里为不同的数据库文件定义不同的可用性属性,这一特性让在多租户架构的pdb (可 ...
- oracle的存储过程
用了两年Oracle还没写过存储过程,真是十分惭愧,从今天开始学习Oracle存储过程,完全零起点,争取每日一篇学习笔记,可能开始认识的不全面甚至有错误,但坚持下来一定会有收获. 1. 建立一个存储过 ...
- oracle数据库存储过程中NO_DATA_FOUND不起作用解决
oracle数据库存储过程中NO_DATA_FOUND不起作用 1.首先创建一个表lengzijiantest,表中只有一个字段f_id ? 1 2 3 4 5 [cpp] CREATE TABLE ...
最新文章
- 看到这些代码,我自叹不如!!!
- 使用SecureCRT设置linux系统登录的ssh公钥认证
- 分布式经典书籍--深入分布式缓存 从原理到实践
- Karp 21个规约问题 笔记 (1~13个规约问题)
- JMeter接口测试示例(六)——上传文件
- SAP Commerce Cloud Accelerator Checkout Delivery Mode 选择页面的实现 JSP
- JAVA annotation入门
- ❤️六万字《Spring框架从入门到精通》(建议收藏)❤️
- 面向对象进阶4:软件开发规范
- 三星s8 android版本,三星S8+官方国行版安卓9完整固件系统升级包:CHC-G9550ZCU3DSF2...
- 【JAVA】doc,excel,等转pdf,swf
- idea破解失败无法打开
- Could Not find resource [logback.groovy] ; Cound Not find resource [logback-test.xml]
- 命令行CMD计算文件HASH值
- CW测速雷达原理介绍
- 07-SNAP处理Sentinel-1 IW GRD数据
- vscode+markdown+pandoc写论文
- 【每日力扣10】有效的数独
- pythonarcgis插件_【直播】基于Python开发ArcGIS插件:Python Add-in丨城市数据派
- Glide,AndroidX包兼容问题
热门文章
- bat脚本中,常用的开头与结尾(关闭回显,让输出变得更加简洁)
- android自定义透明圆形,Android progressdialog自定义背景透明的圆形进度条类似于Dialog...
- 【Oracle】重置参数
- MYSQL主从不同步延迟原理分析及解决方案
- Ubuntu14.04 搜索不到WIFI或连接不上的解决方法。
- Build path entry is missing: /src/test/java missing 报错问题解决
- iOS中 H5的input输入框focus()无法自动拉起键盘(解决方法)
- Sqlite 数据库出现database disk image is malformed报错的解决方法
- 解决CocosCreator 在微信小游戏中使用Socket.io 报错的问题
- 比较浮点值有多危险?