oracle语法记录

-- loop的三种形式
(1).LOOP
(2).WHILE ... LOOOP
(3).FOR ... LOOP

1.基本的LOOP语句
SET serveroutput ON;

-- exit ... when 结束循环

DECLARE
    v_value NUMBER(8) := -3;
BEGIN
  <<value_loop>>  -- 循环标记
  LOOP
    dbms_output.put_line(‘v_value = ‘ || v_value);
    v_value := v_value+1;
    EXIT value_loop WHEN v_value > 3;
  END LOOP;
    dbms_output.put_line(‘loop循环结束!‘);
END;

-- if ... exit 结束循环

DECLARE
   v_value NUMBER(8) := -3;
BEGIN
  <<value_loop>>
  LOOP
    dbms_output.put_line(‘value:‘ || v_value);
    v_value := v_value +1;
    IF v_value > 3 THEN
      dbms_output.put_line(‘value is larger than 3 , current value is ‘ || v_value);
      EXIT value_loop;
    END IF;
  END LOOP value_loop;

  dbms_output.put_line(‘loop is end‘);
END;

2.while ...loop 结构

本身可以结束循环

DECLARE
        v_value NUMBER(8) := -3;
BEGIN
  <<while_loop>>
  WHILE(v_value < 4)
  LOOP
       dbms_output.put_line(‘value is ‘ || v_value);
       v_value := v_value + 1;
  END LOOP while_loop;
  dbms_output.put_line(‘while loop is end‘);
END;

3. FOR ... LOOP 结构

可以遍历某个范围整数

BEGIN
  FOR v_value IN  -3..3 LOOP
    dbms_output.put_line(‘value is ‘ || v_value);
  END LOOP ;
  dbms_output.put_line(‘for loop is end‘);
END;

-- oracle 的时间
SYSDATE 系统时间
SYSTIMESTAMP 当前系统的时间戳
CURRENT_TIMESTAMP 与时区设置有关,返回的秒是系统的,返回的日期和时间是根据时区转换过的.
current_date  是对CURRENT_TIMESTAMP准确到秒的四舍五入。

select sysdate,systimestamp,current_date,current_timestamp from dual;

-- oracle序列

CREATE SEQUENCE SEQ_TT_TRMS_CAR_TASK
START WITH 1
INCREMENT BY 1
NOMAXVALUE
MINVALUE 1
NOCYCLE
NOCACHE

currval:返回sequence的当前值
nextval:返回增加sequence的值,然后返回sequence的值

SELECT SEQ_TT_TRMS_CAR_TASK.currval FROM dual;
SELECT SEQ_TT_TRMS_CAR_TASK.nextval FROM dual;

-- sql%rowcount
oracle 的变量  影响的行数

  

时间: 2024-10-19 07:01:29

oracle语法记录的相关文章

项目中oracle存储过程记录——常用语法备忘

项目中oracle存储过程记录--常用语法备忘 项目中需要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.其中原表之一的日期字段是timestamp类型,目标表的字段是varchar2类型: 其中一些内容很常用,所以做下记录,供查找. 1.存储过程的格式 oracle存储过程和函数都可以实现,一般没有返回值,则采用存储过程,函数比sqlserver的功能强大.oracle变量定义最好加上前缀如V_,查询条件中变量名称和字段名称不能重复

Markdown 常见语法记录

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面. 简单的来说,Markdown就是用"标记符号"表示"格式".Markdown语法标签与HTML语法标签是一一对应的,比如Markdown的二级标题标签##就对应着HTML中的< h2>-< /h2>标记,而且Markdown是兼容HTML语法的,如果你比较喜欢 HTML 的< a >或 < img >

oracle中记录被另一个用户锁住的原因与解决办法

oracle数据中删除数据时提示“记录被另一个用户锁住” 解决方法: 1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b.owner,b.object_name,l.session_id,l.locked_mode from v$locked_object l, dba_objects b where b.object_id=l.object_id

Perl常用语法记录

Perl常用语法记录 ##包的切换和调用其它包的方式 #package A; #my $a=10; #package B; #print $A::a; #print $a;     ##local局部标识符的使用 #$aa=20; #{ # local $aa; # $aa=10; # print "$aa \n"; # #} #print $aa; ##别名的使用 =comment $b=10; $a=1; $c=200; { local *b; *b=*a; $b=20; prin

oracle递归查询记录

1. start with  开始的id  connect by prior 开始的id=父id 2. level 级别 3.实例 select * from ( select a.*,level tt from biz_district a start with district_id=8 connect by prior district_id=parent_id ) where tt=3 select a.district_id, a.district_name, b.district_i

oracle 语法

1.基本语法:SELECT *[列名 [[AS] 别名], 列名2...] FROM 表名 [[AS] 别名]; 2. 使用||做连接:Oracle中的字符串用单引号.   例:SELECT '姓名:'||ename||'月薪'||sal FROM emp; 3. 使用DISTINCT可以消除重复内容 4. WHERE子句:使用WHERE指定的条件对数据进行筛选,返回符合条件的记录(行).   SELECT *[|列名 [[AS] 别名], 列名2...]       FROM 表名 [[AS]

Oracle问题记录(一)

oracle 如果没有启动监听服务,是不能被远程访问的,如果使用oci或者sql developer就会出错. 启动TNS监听:lsnrctl start 查看TNS监听:lsnrctl status 停止TNS监听:lsnrctl stop oracle远程登录: sqlplus usrname/[email protected]:port/sid ip为目标oracle所在宿主机ip地址,port为目标oracle监听端口号,sid时目标oracle的sid. 其中,sid可以通过命令 sh

[转]Oracle学习记录 九 Prc C学习

经过前面的了解,现在想用C语言来编程了,搜索了很多东西,后来决定先用Pro C来进行学习 在安装完Oracle数据库后就可以进行编程了,里面有一个命令proc就是对程序进行预编译的. 在这记一下,这是一个学习PL/SQL的网站,挺好的 http://www.cnblogs.com/huyong/archive/2012/07/30/2614563.html 创建用户是 create user xx identified by xx account unlock; grant connect, r

Oracle 查询记录是否存在的效率问题

最近要优化Oracle数据库的效率,然后在网上查了很多判断记录是否存在的高效率方法网上有很多的建议第一种方法,我做了一个测试,但是可能数据量不够大,42667条记录,不知道很大的数据量是什么一个情况 网上好多高效的建议方式 select * from item where item='1B241371X0021' and rownum<2; 但是我测试的结果: select * from item where item='1B241371X0021' and rownum<2; 1 rows