记录湖北移动襄阳云计算中心日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
代码编写规则 一、PLSQL 块的语法规则:     1、语句可以跨跃几行。     2、词汇单元可以包括:分隔符、标识符、文字、和注释内容。     3、分隔符:      +-*/=<>||....     4、标识符:      最多30个字符,不能有保留字除非用双引号引起。      字母开头,不与列同名。     5、文字串:如 V_ENAME:='FANCY';要用单引号括起来。        数值型可以用简单记数和科学记数法。     6、注释内容:        单行时用   --            多行用   /*   */        与C很相似 建议 定义变量:v_变量名 定义常量:c_常量名 定义游标:_cursor 定义异常:e_ 定义pl/sql表类型:_table_type 定义pl/sql表变量:_table 定义pl/sql记录类型:_record_type 定义pl/sql记录...
定义:CREATE [OR REPLACE] FUNCTION <过程名>[(参数列表)] RETURN 数据类型 IS         [局部变量声明]         BEGIN            可执行语句          EXCEPTION            异常处理语句          END [<过程名>];变量的类型:in 为默认类型,表示输入; out 表示只输出;in out 表示即输入又输出;使用:   示例1:创建函数:create or replace function f_1(n number) return number is    r emp%rowtype;BEGIN     dbms_output.put_line('姓名 薪水');     select * into r from emp where empno=n;     dbms_output.put_line(r.ename||' '||r.sal);    --输出结果,需要 set serverout on 才能显示.    ...
oracle 使用pl/sql通过雇员所在部门号查出对应部门名称。参考示例语句如下:declarev_no emp.deptno%TYPE;v_dname dept.dname%TYPE;begin  begin  select e.deptno into v_no from emp e where lower(e.ename)=lower('&dna');  end;select d.dname into v_dname from dept d where d.deptno=v_no;dbms_output.put_line('雇员姓名是:'||lower('&dna')||'的部门名是:'||v_dname);end;/
oracle 使用PL/SQL与游标(CURSOR),循环(loop),条件(if)来更新数据。declare  CURSOR emp_cursor is    SELECT ename, sal FROM emp FOR UPDATE;  emp_record emp_cursor%ROWTYPE;begin  OPEN emp_cursor;  LOOP    FETCH emp_cursor      INTO emp_record;    EXIT WHEN emp_cursor%NOTFOUND;    if emp_record.sal < 2000 THEN      UPDATE emp SET sal = sal * 1.1 where CURRENT of emp_cursor;    end if;  end loop;  commit;end;/本PL/SQL块使用了loop语句取的了所有雇员的姓名与工资,并且使用了条件控制语句(if)判断雇员工资,如果低于2000,则给该雇员增加10%的工资。使用sqldeveloper工具执行时,commit 只能放到end loop 之后,不能放到之前或是end if 之前。
oracle数据库时间戳转换成日期时间方法时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。北京时间是东8区,所以要加8小时。1, 现在需要将oracle数据库中的表中的时间戳字段转换成北京时间的日期时间格式,表格如下图。       COMPANY_NAME    BILL_NUM    STARTTIME     1    随州市甜蜜食品厂    9002254531    1370769194     使用下面方法可以转换。SELECT c.company_name,c.bill_num,c.starttime,TO_CHAR(c.starttime / (60 * 60 * 24) +               TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'),    &nbs...
oracle 利用存储过程输入参数返回多行数据方法。oracle 自带示例scott账号下,利用存储过程返回一行与多行数据方法。1,利用存储过程返回一行数据,输入参数empno,返回ename与sal.create or replace procedure p_emp_info(p_empno emp.empno%TYPE)asp_ename emp.ename%TYPE;p_sal   emp.sal%TYPE;p_count NUMBER;begin   select count(e.empno) into p_count from scott.emp e where e.empno=p_empno;   if p_count=0 then      return;    end if;    select ename,sal into p_ename,p_sal from emp e where e.empno=p_empno;    DBMS_OUTPUT.put_line('部门号: '||p_empno||'.员工姓名:'||p_ename||'. 工资:'||p_sal);end;/由于select into 每次只能输入一行数据,所以这个方法只能用于一行数据返回。SQL> set serverout onSQL> exec p_emp_info(7782);部门号: 7782.员工姓名:CLARK. 工资:2450PL/SQL procedure successfully completed2,使用过程与游标,for in 循环,返回多行数据。SQL> create or replace procedure get_emp_info(p_deptno emp.deptno%T...
    总共316页,当前第1页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7