declare
v_name varchar2(20);
begin
select ename into v_name from emp where empno = 7369;
dbms_output.put_line(v_name);
end;
declare
varr varchar2(100);
begin
varr := 'hello'' world!';
dbms_output.put_line(varr);
end;
declare
v_name emp.ename%type;
begin
select ename into v_name from emp where empno = 7369;
dbms_output.put_line(v_name);
end;
var v_ename varchar2(20);
declare
begin
select ename into :v_ename from emp where empno = 7369;
dbms_output.put_line(:v_ename);
end;
declare
vaa varchar2(200) :='hello girl';
begin
vaa:=initcap(vaa);
dbms_output.put_line(vaa);
end;
declare
vaa varchar2(200) :='hello girl';
begin
vaa:=replace(vaa,' ','_');
dbms_output.put_line(vaa);
end;
declare
vaa date := sysdate;
begin
dbms_output.put_line(to_char(vaa,'yyyy-mm-dd hh24:mi:ss'));
end;
--取最大值,--最小值 least()---
declare
begin
dbms_output.put_line(greatest(1,2,3));
end;
declare
x number;
begin
x:=10;
declare
y number;
begin
y:=15;
x:=x+y;
dbms_output.put_line('x='||x);
end;
dbms_output.put_line('y='||y);
end;
<<outerr>>
declare
x number :=10;
begin
declare
x number;
begin
x:=15;
x:=x+10;
dbms_output.put_line('x='||x);
dbms_output.put_line('x='||outerr.x);
end;
end;
--求次方--
declare
vaa number :=2;
begin
dbms_output.put_line(vaa**3);
end;
--select into 查询结果只能返回一条数据 --
declare
v_sal emp.sal%type;
v_empno emp.empno%type :=7369;
v_count number;
begin
select count(sal) into v_count from emp where empno = v_empno;
if v_count=1 then
select sal into v_sal from emp where empno = v_empno;
dbms_output.put_line(v_sal);
end if;
end;
--游标 --
declare
v_empno emp.empno%type := 7369;
begin
delete emp where empno=v_empno;
if sql%notfound then
dbms_output.put_line("not found!");
end if;
end;
declare
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno = v_empno;
if v_sal<400 then
dbms_output.put_line('aaaaaa');
elsif v_sal <800 then
dbms_output.put_line('bbbbbbbbb');
else
dbms_output.put_line('xxxxxxx');
end if;
end;
declare
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno = v_empno;
if nvl(v_sal,0)<400 then
dbms_output.put_line('aaaaaa');
else if v_sal <800 then
dbms_output.put_line('bbbbbbbbb');
else
dbms_output.put_line('xxxxxxx');
end if;
end if;
end;
--case语句--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
begin
select deptno into v_deptno from emp where empno = v_empno;
case v_deptno
when 30 then
dbms_output.put_line('bbbbbbbbb');
when 20 then
dbms_output.put_line('ccccccccc');
else
dbms_output.put_line('xxxxx');
end case;
end;
--case表达式--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
select deptno ,sal into v_deptno, v_sal from emp where empno = v_empno;
v_sal := case v_deptno
when 30 then v_sal*1.5
when 20 then v_sal*2
else v_sal*0.5
end;
dbms_output.put_line(v_sal);
end;
--loop--
declare
v_deptno emp.deptno%type;
v_empno emp.empno%type := 7369;
v_sal emp.sal%type;
begin
loop
v_empno:=v_empno+1;
exit when v_empno >7372;
end loop;
dbms_output.put_line(v_empno);
end;
--while--
declare
i number :=10;
begin
while i>0 loop
i:=i-1;
dbms_output.put_line(i);
end loop;
end;
--for loops--
declare
begin
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
end;
--record--
declare
type emp_rec_type is record
(ename emp.ename%type,
job emp.job%type,
sal emp.sal%type);
emp_rec emp_rec_type;
begin
emp_rec.ename :='3455';
emp_rec.job :='324';
emp_rec.sal :='345';
dbms_output.put_line('emp_rec.sal ='||emp_rec.sal);
end;
--rowtype--
declare
emp_rec emp%rowtype;
v_empno number := 7369;
begin
select * into emp_rec from emp where emp.empno = v_empno;
dbms_output.put_line(emp_rec.sal);
end;
--index 数组--
declare
type emp_ename is table of
emp.ename%type index by pls_integer;
v_emp_ename emp_ename;
begin
for i in 1..14 loop
select ename into v_emp_ename(i) from emp where empno = 7369;
end loop;
for i in v_emp_ename.first..v_emp_ename.last loop
dbms_output.put_line(v_emp_ename(i));
end loop;
end;
declare
type emp_ename is table of
emp%rowtype index by pls_integer;
v_emp_ename emp_ename;
begin
for i in 1..14 loop
select * into v_emp_ename(i) from emp where empno = 7369;
end loop;
for i in v_emp_ename.first..v_emp_ename.last loop
dbms_output.put_line(v_emp_ename(i).ename);
end loop;
end;
--游标 cursor 定义
--open<分配内存,执行sql,指向第一条数据
--fetch<把游标的数据放入变量,游标下移--
--close<关闭游标 c_emp.ename is error
--loop
declare
cursor c_emp is
select * from emp;
v_emp emp%rowtype;
begin
open c_emp;
loop
dbms_output.put_line(v_emp.ename);
dbms_output.put_line(c_emp%rowcount);
fetch c_emp into v_emp;
exit when c_emp%notfound;
end loop;
close c_emp;
end;
--while
declare
cursor c_emp is
select * from emp;
v_emp emp%rowtype;
begin
open c_emp;
fetch c_emp into v_emp;
while c_emp%found loop
dbms_output.put_line(v_emp.ename);
fetch c_emp into v_emp;
end loop;
close c_emp;
end;
--if
declare
cursor c_emp is
select * from emp;
begin
--if c_emp%isopen=false then
-- open c_emp;
-- end if;
for v_emp in c_emp loop
dbms_output.put_line(v_emp.ename);
end loop;
--close c_emp;
end;
--带参数的游标
declare
cursor c_emp(c_empno number) is
select * from emp where empno = c_empno;
begin
for v_emp in c_emp(7369) loop
dbms_output.put_line(v_emp.ename);
end loop;
end;
--exception--
declare
emp_rec emp%rowtype;
v_empno number := 7369;
begin
select * into emp_rec from emp where emp.empno = v_empno;
dbms_output.put_line(emp_rec.sal);
exception
when too_many_rows then
null;
end;
---过程
create or replace procedure getsal(v_empno number)
is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno=v_empno;
dbms_output.put_line(v_sal);
end;
--函数,在sql里调用不能有输出参数,只能返回sql支持的数据类型
create or replace function getename(v_empno number ,v_ename out emp.ename%type)
return emp.ename%type
is
begin
select ename into v_ename from emp where empno=v_empno;
return v_ename;
end;
begin
dbms_output.put_line();
end;
--package----
create or replace package changeemp
is
function test(v_enpno number);
end changeemp;
create or replace package body changeemp
is
function test(v_enpno number)
is
begin
end;
end changeemp;
-- 重载--
create or replace procedure test1(v_enpno number)
is
begin
getsal(7369);
end;
--读写文件
grant create any directory to scortt;
create directory "DIR_PATH" AS 'c:\';
grant read on directory DIR_PATH TO user ;
grant write on directory DIR_PATHE TO user ;
declare
cursor c1 is select * from emp;
filehandle utl_file.file_type;
begin
for rec in c1 loop
dbms_output.put_line(rec.ename);
filehandle := utl_file.fopen('c:\','1.txt','w');
utl_file.put_line(filehandle,rec.ename);
end loop;
utl_file.fclose(filehandle);
end;
--
create or replace procedure proc2 is
pragma
autonomous_transaction;
dept_id number := 90;
begin
update
insert
commit;
end proc2;
--触发器
create or replace trigger trigger1
before
insert
on emp
declare
v_msg varchar2(40);
begin
if to_char(sysdate,'hh24') not between '08' and '18' then
v_msg:='cant insert';
raise_application_error(-20201,v_msg);
end if;
end;
分享到:
相关推荐
PL/SQL是一种用于Oracle数据库的结构化查询语言扩展,它结合了SQL的数据操作功能和过程编程语言的控制结构。以下是对标题和描述中提到的PL/SQL知识点的详细解释: 1. **数据检索**: - **单行数据检索**:可以使用...
达内的PLSQL笔记和代码资料,无疑是学习和提升PLSQL技能的重要资源。 在`PLSQL_note.pdf`中,你可能会找到以下知识点: 1. **PLSQL基础**:包括PLSQL的结构,如声明部分、执行部分和异常处理部分,以及变量、常量...
根据给定的信息,本文将对《PLSQL笔记(EFRIOO&GUOH)1.doc》中的主要内容进行详细解析,涵盖数据库检索、数据操纵、事务控制、控制结构、复合数据类型等多个方面。 ### 一、检索单行数据 #### 1.1 使用标量变量接受...
以上只是PLSQL笔记中的部分内容,实际笔记会更详细地介绍每部分的概念、语法和实例,帮助你深入理解并熟练运用PLSQL进行数据库编程。通过学习这些笔记,你将能够掌握PLSQL的高级应用,从而在Oracle数据库开发中...
本笔记主要由EFRIOO和GUOH共同整理,涵盖了PLSQL的基础概念、数据检索、数据操纵以及SQL游标等关键知识点。 1. **检索单行数据** - **使用标量变量接受数据**:在PLSQL中,可以声明标量变量如`VAR VARCHAR2(100)`...
### PL/SQL笔记知识点概述 #### 一、PL/SQL块中的SQL语句限制 - **可嵌入的语句**:在PL/SQL块中可以直接嵌入`SELECT`、`DML`(如`INSERT`、`UPDATE`、`DELETE`)以及事务控制语句(如`COMMIT`、`ROLLBACK`、`...
【PLSQL学习笔记】 PLSQL(Procedural Language/Structured Query Language)是Oracle数据库系统中的一个强大编程语言,它结合了SQL的查询能力与过程式编程语言的特点,为数据库开发提供了丰富的功能。这篇学习笔记...
PL/SQL是Oracle数据库的一种编程语言,主要用于处理和操纵数据。它是SQL的扩展,增加了流程控制、异常处理和数据类型等功能,使得在数据库环境中编写复杂程序成为可能。 在PL/SQL块中,你可以直接嵌入SELECT、DML...
### PL/SQL 使用技巧与心得 #### 检索单行数据 - **使用标量变量接受数据**:标量变量用于存储单个值。在检索单行数据时,可以通过`SELECT ......例如: ```sql DECLARE v_name VARCHAR2(50);...
本学习笔记涵盖了从基础到进阶的PLSQL知识,旨在帮助读者全面理解和掌握这一强大的数据库编程工具。 1. **基础概念** - **PL/SQL块**:PLSQL程序的基本结构是块,包括声明部分、执行部分和异常处理部分。 - **...
**PLSQL学习笔记** PL/SQL(Procedural Language/Structured Query ...本笔记中的"PLSQL笔记.doc"文件可能包含了更详尽的示例和练习,可以帮助你进一步巩固这些概念。建议结合实际数据库环境进行实践,以加深理解。
PLSQL上课笔记和版书
### Oracle PL/SQL编程核心知识点解析 #### 一、创建基本表与操作 在Oracle数据库中,使用PL/SQL进行数据库编程前,首先需掌握如何创建表与进行基本的CRUD(创建、读取、更新、删除)操作。示例中的`CREATE TABLE`...
Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...
通过这份"PLSQL笔记",初学者可以系统地了解和掌握PL/SQL的基本概念、语法和实践技巧,进一步提升在数据库管理领域的专业技能。在实际学习过程中,结合实例进行练习,将理论知识与实际操作相结合,能更有效地巩固和...
plsql 课堂笔记 ,需要的 人可供参考之用
### PLSQL语法总结笔记 #### 一、数据类型与变量定义 **1. 字符型** - **CHAR**: 固定长度字符类型。 - **VARCHAR2**: 变长字符类型,最大长度可达4000字节。 - **LONG**: 存储长文本数据,最多2000个非汉字...
```plsql DECLARE v_name VARCHAR2(64) := 'jack'; BEGIN NULL; -- 这里使用NULL作为占位符,不执行任何操作 DBMS_OUTPUT.PUT_LINE(v_name); -- 输出变量值 END; ``` - **分析**:这个例子展示了如何声明一个变量...
这篇"PLSQL开发笔记和小结"可能涵盖了许多关于PLSQL的基础知识和高级技巧,虽然具体的内容无法在此提供,但我们可以根据常规的PLSQL学习路线来探讨一些关键知识点: 1. **基本语法**:PLSQL由声明部分、执行部分和...