zoukankan      html  css  js  c++  java
  • Oracle procedure存储过程/function函数

    --函数的创建
    create function func1(dno number)
    return NUMBER--必须带有返回值
    is 
      v_max number;--定义返回值
      begin
        select  max(sal) into v_max--赋值
        from emp where deptno= dno;
        RETURN v_max;--返回
      end;
    --函数的调用,只能是表达式的一部分,不能单独调用
     select * from emp where sal= func1(10);
     -------------------------------------------------------------------------------
     --创建过程存在则替换,带输出参数
     create or replace procedure proc1(dno in number,maxsal out number)----------参数不能有(10)这样的长度控制
     is
      v_maxsal number;
     begin
      select max(sal) into v_maxsal
      from emp where deptno= dno;
      maxsal := v_maxsal;--给输出参数赋值
      dbms_output.put_line(v_maxsal);--打印
     end;
     
     --调用过程
     declare maxsal number;
     begin
      proc1(10,maxsal);
      dbms_output.put_line(maxsal);
     end;
    --------------------------------------------------------------------------------
    /*
     创建返回多行的存储过程
    */
    create or REPLACE procedure proc_test
    is
    begin
       DECLARE cursor cc is SELECT * from emp;--这里定义一个游标集合变量cc
       begin
          
          for r in cc loop--对游标cc进行遍历
             dbms_output.put_line(r.ename || ':' || r.sal);
          end loop;--结束遍历
       end;
       end;
       ---调用
       begin
        proc_test();
       end;
    

      1.函数必须是和语句一起执行,不能被单独执行,必须有返回值。

          2存储过程 可以被单独执行,没有返回值。

    下面是在PL/SQL中使用动态sql语句:

      -------Oracle中 DML:insert,delete,update
      -------TCL:COMMIT,ROLLBACK,SAVEPOINT ONT,ROLLBACK TO ONE;
      -------DQL:SELECT
      --PL/SQL 中使用本地动态sql
      DECLARE
      str VARCHAR2(200);
      outid number;
      begin
       --values(:1,:2)占位符,returning id into :3将id赋值给第三个参数
       str :='insert into test123 values(:1,:2) returning id into :3';
       execute immediate str --运行动态sql
       using 1,'php'--给占位符赋值 1 2
       RETURNING into outid;--3
       dbms_output.put_line(outid);
      end;
    

      

  • 相关阅读:
    剖析HBase负载均衡和性能指标
    Hadoop大数据挖掘从入门到进阶实战
    实战Kafka ACL机制
    论文笔记系列--MnasNet:Platform-Aware Neural Architecture Search for Mobile
    在 Vim 中优雅地查找和替换
    VIM的列编辑操作
    理解Pytorch中LSTM的输入输出参数含义
    Python为什么要用抽象类(abc模块)?
    概率密度估计介绍
    Docker永久挂载本地目录
  • 原文地址:https://www.cnblogs.com/Evan-Pei/p/4685205.html
Copyright © 2011-2022 走看看