Oracle PL/SQL程序设计 第五版 上册 第三章 语言基础
最近看了很多东西,也练习了一些,我发现这东西好像有点进入瓶颈的感觉,这个瓶颈,我觉得是因为时间太短,
练习的还不够多,并且有很多东西都是随意带过弄的。并且最近在学习Python,有些东西还有点混淆了,我决定从新
来一遍这本书,把每一个例子都进行一个学习。
PL/SQL块有匿名的,也有命名的,其实命名就是那些过程、函数、包、触发器、对象类型这些。书中第一个例子是这样的。
insert.sql
CREATE OR REPLACE PROCEDURE get_happy(emp_id_in IN NUMBER) AUTHID CURRENT_USER IS l_hiredate DATE; BEGIN l_hiredate := SYSDATE - 2; INSERT INTO employees (employee_id, hire_date) VALUES (emp_id_in, l_hiredate); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE(‘Cannot insert.‘); END; /
书中的例子其实有点坑,我看着像是安装数据库的时候自带的表中的数据,然后我就按着它的写了,使用hr的账号登录,
一创建就出问题,后来发现根本不是,并且那个错误 DUP_VAL_ON_INDEX,他书中的那个也是错的。
下面是一个匿名块
date.sql
DECLARE l_date DATE; BEGIN l_date := SYSDATE - 5; DBMS_OUTPUT.PUT_LINE(l_date); END; /
我现在还有点不知道怎么调用那个过程,虽然以前试过了,但是没记住。
下面我就自己试着写一个调用的,我写一个打印时间的过程,然后在一个匿名块中调用它。
get_date.sql
CREATE OR REPLACE PROCEDURE get_date(num_in IN NUMBER) AUTHID CURRENT_USER IS l_date DATE; BEGIN l_date := SYSDATE - num_in; DBMS_OUTPUT.PUT_LINE(l_date); END; /
然后匿名块调用
date.sql
BEGIN get_date(10); END; /
这样就实现了调用,成功输出了,如果你的显示成功但没有输出内容,应该是没有打开输出那个功能。
我是使用sqlplus来运行的这些.sql文件, @ xxx.sql
并且在sqlplus中输入 set serverout on; 使用这个命令打开输出功能。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。