V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liushawn1999
V2EX  ›  程序员

plsql 存储过程的学习,想问一下存储过程是不是有点类似 c 语言的函数封装

  •  
  •   liushawn1999 · 355 天前 · 828 次点击
    这是一个创建于 355 天前的主题,其中的信息可能已经有所发展或是发生改变。
    学习 plsql 的第二天,今天学的是存储过程的创建和执行
    --业务是查询 id 是 100 的员工的姓名,并且打印出来
    --语句如下

    create or replace procedure find_emp is
    v_name employees.first_name%type;
    v_num number := 1;
    begin
    -- 业务
    select e.first_name into v_name from employees e where e.employee_id = 100;
    -- 打印输出
    dbms_output.put_line(v_name);

    -- 赋值
    v_num := v_num/0;
    dbms_output.put_line(v_num);


    -- 异常部分
    exception
    when no_data_found then
    dbms_output.put_line(sqlerrm || ' ' || sqlcode);
    when others then
    dbms_output.put_line( 'others:' || sqlerrm || ' ' || sqlcode);
    end;


    -- 执行存储过程
    call find_emp();

    -- 调用的第二种方式
    begin
    find_emp;
    find_emp();
    end;

    想问一下存储过程是不是有点类似 c 语言的函数封装?
    begin 相当于 main,在主函数中又调了出来,是这个理解吗?
    5 条回复    2023-11-13 17:03:34 +08:00
    wanguorui123
        1
    wanguorui123  
       355 天前
    有点像 VB
    mightybruce
        2
    mightybruce  
       355 天前
    并没有,sql 和 C 混写并需要编译执行的 embedded sql 已经基本绝迹了,embedded sql 才是类似 C 语言 封装。
    zlowly
        3
    zlowly  
       355 天前
    并不应该用 C 语言去作类似联想。
    plsql 应该是 PL/SQL 。
    SQL 是结构化查询语言,而 PL/SQL 是 oracle 公司引入了类 Ada 的过程语言对 SQL 做出扩展,使得可以写出具有条件、循环等过程特征的代码。
    这些代码块可以直接执行,也可以命名后存储为存储过程或函数方便重复使用 ,封装并不它本意。封装使用的更多是 Package 。
    liushawn1999
        4
    liushawn1999  
    OP
       355 天前
    @zlowly 哦哦,原来如此,pl/sql 是不同于 sql 的一门语言是吧
    liushawn1999
        5
    liushawn1999  
    OP
       355 天前
    @mightybruce 哦哦好吧,没怎么听说过 embedded sql 这门语言
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.