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

2023-11-13 11:56:01 +08:00
 liushawn1999
学习 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,在主函数中又调了出来,是这个理解吗?
846 次点击
所在节点    程序员
5 条回复
wanguorui123
2023-11-13 14:05:41 +08:00
有点像 VB
mightybruce
2023-11-13 14:36:11 +08:00
并没有,sql 和 C 混写并需要编译执行的 embedded sql 已经基本绝迹了,embedded sql 才是类似 C 语言 封装。
zlowly
2023-11-13 16:12:04 +08:00
并不应该用 C 语言去作类似联想。
plsql 应该是 PL/SQL 。
SQL 是结构化查询语言,而 PL/SQL 是 oracle 公司引入了类 Ada 的过程语言对 SQL 做出扩展,使得可以写出具有条件、循环等过程特征的代码。
这些代码块可以直接执行,也可以命名后存储为存储过程或函数方便重复使用 ,封装并不它本意。封装使用的更多是 Package 。
liushawn1999
2023-11-13 17:02:52 +08:00
@zlowly 哦哦,原来如此,pl/sql 是不同于 sql 的一门语言是吧
liushawn1999
2023-11-13 17:03:34 +08:00
@mightybruce 哦哦好吧,没怎么听说过 embedded sql 这门语言

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991419

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX