zoukankan      html  css  js  c++  java
  • PL/SQL 存储函数和过程

    --存储过程  
     1.不带参:
       create or replace procedure 存储过程名
    as|is
    --说明部分
    begin
    --执行的语句;
    end;
    
    调用存储过程
    
    1 execute 存储过程名
       --exec 存储过程名
    
    
    2  在另外的plsql语句中直接调用
    
    begin  
       存储过程名;
       存储过程名;
       存储过程名;
    endcreate or replace procedure p_dept
    as
    begin
      dbms_output.put_line('存储过程');
    end;
    
    
    
    
    
    
    2.带参的存储过程
    
    
    create or replace procedure 存储过程名 (参数 in|out 参数类型)
    as|is
    --说明部分
    begin
    --执行的语句;
    end--eg:
    create or replace procedure p_dept1 (nuo in number)
    as
    --说明部分
    v_english dept.english%type;
    begin
    --执行的语句;
    
    --修改前的分数
    select english into v_english from dept where id=nuo;
    --修改后的分数
    update dept set english=english+10 where id=nuo;
    --打印
    dbms_output.put_line('修改前分数为:'||v_english||'修改后的分数为'||(v_english+10));
    
    end;
    in和out的区别
    
    
    
    
    --创建一个不带参的函数
    
    create or replace function f_dept
    --返回的是一个类型
    return number
    as
    --说明部分
    --定义一个变量来接收分数
    v_english dept.english%type;
    
    begin
      select english into v_english from dept where name1='杨雾';
      dbms_output.put_line(v_english);
      return v_english;
    end;
    
    
    
    --存储过程调用out方法实现返回多个值
    create or replace procedure p_dept2 (nuo in number,
                                         v_name out varchar2,
                                         v_english out number,
                                         v_math out number)
    
    as
    --说明部分
    begin
    --执行的语句;
    
    --修改前的分数
    select name1,english,math into v_name,v_english,v_math from dept where id=nuo;
    
    end;
    -- 存储过程
    create or replace procedure p_score
    is v_math number;
    begin 
      select math into v_math from scores where id=3;
      dbms_output.put_line(v_math);
    end;
    
    
    -- 带参储存过程
    create procedure p_score2(digital in number)
    as v_chinese number;
    begin 
      select chinese into v_chinese from scores where id=digital;
      dbms_output.put_line(v_chinese);
    end;
    
    
    --存储过程调用out方法返回多个值
    create or replace procedure 
    p_score3(v_id in number,v_english out number,v_chinese out number)
    as v_math number;
    begin 
      select math,chinese,english into v_math,v_chinese,v_english from scores
      where id = v_id;
      dbms_output.put_line('Math:'||v_math||','||'Chinese:'||v_chinese||','||'English:'||v_english);
    end;
    
    
    
    -- 函数
    create or replace function f_score
    return number
    as
    v_english scores.english%type;
    begin
      select english into v_english from scores where id = 5;
      return v_english;
    end;
      
    -- 带参函数
    create or replace function f_score2(digital in number)
    return scores.english%type
    as
    v_english number;
    begin
      select english into v_english from scores where id = digital;
      return v_english;
    end;
    
    
    
    
    
    
    
    
      
  • 相关阅读:
    Android签名详解(debug和release)
    Java反射机制的学习
    Android应用开发中如何使用隐藏API(转)
    asp.net购物车,订单以及模拟支付宝支付(二)---订单表
    asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程
    asp.net权限控制的方式
    .Net使用程序发送邮件时的问题
    Word2016“此功能看似已中断 并需要修复”问题解决办法
    C#字符串来袭——因为爱,所以爱
    C#时间的味道——任时光匆匆我只在乎你
  • 原文地址:https://www.cnblogs.com/lantu1989/p/6165221.html
Copyright © 2011-2022 走看看