• oracle个人小结摘要


    --into是赋值的关键字
    select to_char(sysdate,'yyyy-mm-dd')into v_date FROM dual
    --:=则是对属性进行赋值
    name := 'xiaoming';
    --这条是输出语句
    dbms_output.put_line ( 'name=' || name || ', age=' || age );
    --处理异常
    EXCEPTION when others then   
    --存储过程调用语法(无输入参数)其中的圆括号可以省略
    begin
      crdProceDureTest();
    end;
    --存储过程调用语法(有输入参数)
    declare
    v_name varchar(200);
    begin
    testInOut('10000025397236',v_name);
    end;
    --小结
    --1注意end后面要加分号;不然声明的存储过程有误,然后调用失败(调用存储语法中的end也一样)
    --2当我们创建的存储过程没有参数时,在存储过程名字后面不能有括号。
    --3在AS或者IS后至BEGIN之前是声明部分,存储过程中的声明不使用DECLARE关键字。
    --4同匿名PL/SQL块一样,EXCEPTION和声明部分都是可选的。
    --5当我们创建的过程带有错误时,我们可以通过SELECT * FROM USER_ERRORS查看,或者使用SHOW ERRORS [ 
    --6.0当定义的存储过程含有参数时,参数的数据类型不能指定长度。
    --6.1参数的数据类型不能指定长度(以下两个参数声明语法有误)
    CREATE OR REPLACE PROCEDURE getSalaryByEmpNo(eNo NUMBER,name out varchar2(50))
    --6.2参数默认情况为输入参数,也可显示的指定某个参数是输入参数 添加in 即可 如 testInOut(inId in number,v_name out varchar2)
    --7创建参数类型既是输入参数也是输出参数的过程
    CREATE OR REPLACE PROCEDURE getSalaryByEmpNo(noSalary IN OUT NUMBER)
     AS
     BEGIN
       SELECT SAL INTO noSalary  FROM EMP WHERE EMPNO=noSalary;
     EXCEPTION
       WHEN NO_DATA_FOUND THEN
         DBMS_OUTPUT.PUT_LINE('没有找到该编号的员工');
     END;
    --7.1调用如下:
    DECLARE
    no NUMBER(7,2);
    BEGIN
      no:=7788;
       getSalaryByEmpNo(no);
       DBMS_OUTPUT.PUT_LINE(no);
    END;
    --8创建带有默认值的过程
    CREATE OR REPLACE PROCEDURE addEmp
    (
      empNo NUMBER,
      eName VARCHAR2,
      job   VARCHAR2 :='CLERK',
      mgr   NUMBER,
      hiredate DATE  DEFAULT SYSDATE,
      sal  NUMBER    DEFAULT 1000,
      comm  NUMBER   DEFAULT 0,
      deptNo NUMBER  DEFAULT 30
    )
    AS
    BEGIN
      INSERT INTO emp VALUES(empNo,eName,job,mgr,hiredate,sal,comm,deptNo);
    END;
    --8.1调用如下:
    EXEC addEmp(7776,'zhangsan','CODER',7788,'06-1月-2000',2000,0,10);  --没有使用默认值
    EXEC addEmp(7777,'lisi','CODER',7788,'06-1月-2000',2000,NULL,10);  --可以使用NULL值
    EXEC addEmp(7778,'wangwu',mgr=>7788);  --使用默认值
    EXEC addEmp(mgr=>7788,empNo=>7779,eName=>'sunliu');  --更改参数顺序
    
    --9使用以下代码可以执行存储过程:
    BEGIN
        getDeptCount;
    END;
    --9.1以上存储过程还可以通过以下代码来简化调用:
    EXEC getDeptCount[;]   
    CALL  getDeptCount();
    --注意:
    --并不是所有的存储过程都可以用这种方式来调用
    --定义无参存储过程时,存储过程名后不能加()
    --在块中或是通过EXEC调用存储过程时可以省略()
    --通过CALL调用无参存储过程必须加上()
    --10 维护过程
    --10.1、删除存储过程
        DROP PROCEDURE Proc_Name;
    --10.2、查看过程状态
        SELECT object_name,status  FROM USER_OBJECTS WHERE object_type='PROCEDURE';
    --10.3、重新编译过程
        ALTER PROCEDURE Proc_Name COMPILE;
    --10.4、查看过程代码
        SELECT * FROM USER_SOURCE WHERE TYPE='PROCEDURE';
    
    --11参数的理解
    
    -- 11.1输出参数不可以修改 解决的方法有两种
       --11.11 把参数改成 输入参数  
       --11.12 就是参数改成 可输入输出的参数;
    --11.2调用过程的 三个方式
            --11.21 就是使用call
                 --在只用call方式调用函数的时候,必须加要括号,有参数,还要加参数值
                 --这个方式在命令窗口,调用过程,将不会出现输入的数据.
            --11.22 就是使用exec 命令,进行命令调用过程, 使用命令,就必须在命令行里面输入
              --过程名,这个命令窗口中,可加可不加() ,如果有参数的,就一定要加,还有参数值,参数值的类型要与
              --变量类型相同.
           --11.23 在语句块中进行调用过程,这个方式和命令模式类似,他们都是可要可不要(),
            -- 在11.22 和 11.23 中的 没有括号的情况是,过程没有参数 ,如果有,就必须要有()
                                        
    --11.3输出参数的特点
            --11.31 一个过程中,如果有输出参数(OUT 参数),在调用过程的使用,也要传入一个参数, 这个参数可以不用在调用的地方
            --进行赋值,就直接传入一个声明好的一个变量,用来接受存储过程中的输出参数的值(OUT 参数)
           --11.3 2 输入参数 值不可以改变在过程中,
           
               --注意: 在存储过程中,他的参数类型不可以设置它的大小 ;    
                   --例如;
                               CREATE OR REPLACE PROCEDURE hello(
                                   p_name IN VARCHAR2(12),
                                      p_age OUT NUMBER(10,2)
    
    --12 oracle存储过程中is和as区别
    
    --在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
    --在视图(VIEW)中只能用AS不能用IS;
    --在游标(CURSOR)中只能用IS不能用AS。
  • 相关阅读:
    LeetCode5654. 盒子中小球的最大数量
    LeetCode40. 组合总和 II
    LeetCode39. 组合总和
    LeetCode17. 电话号码的字母组合
    Leetcode216. 组合总和 III
    eclipse相关使用
    matlab符号的含义
    matlab矩阵相关的笔记
    vi编辑器
    Linux 环境变量
  • 原文地址:https://www.cnblogs.com/rdchen/p/12887008.html
Copyright © 2020-2023  润新知