游标:
隐式游标:sql%found,sql%notfound;
显示游标:cursor my_cur is .....;
open ..,
fetch ..into,
while xx loop
(fetch into);
end loop;
for 打开游标;
for my_row in my_cursor loop
end loop;
参数游标;
更新游标;for update of username;
打开游标 open cur_student;
循环游标
loop
fetch cur_student into rs_student;
exit when cur_student%notfound;
update t_user set username = 'newusername' where current of cur_student;
end loop;
关闭游标
close cur_student;
commit;
ref 游标:
TYPE ref_cursor is REF cursor;
cur_student ref_cursor;
rs_student t_student%rowtype;
打开游标 open cur_student for select * from t_student;
循环游标
loop
fetch cur_student into rs_student;
exit when cur_student%notfound;
dbms_output.put_line(rs_student.name || rs_student.id);
end loop;
关闭游标
close cur_student;
存储过程:
1.不带任何参数
2.带默认参数
3.带in,out参数
4.带游标
函数
1.带参数,返回参数
2.带变量,返回变量,返回值后无须加分号。
3.sql调用函数
程序包
1.create or replace package my_package
is
procedure my_pro(userid number);
function my_fun(userid number) return varchar2;
end;
2.定义游标
cursor my_cursor(user_id number) return t_user%rowtype;
调用游标
cursor my_cursor(user_id number) return t_user%rowtype
is select * from t_user >user_id;
procedure my_pro(user_id number)
as
user_row t_user%rowtype;
begin
open my_cursor(user_id);
loop
fetch my_cursor into user_row;
exit when my_cursor%notfound;
dbms_output.put_line(user_row.username||'12');
end loop;
end;
触发器
create or replace trigger first_trigger before insert on t_user
for each row
begin
select seq_t_user.nextval into :new.userid from dual;
end;
instead of触发器
create or replace trigger third_trigger instead of update on t_user_view
for each row
begin
update t_user set username=:new.username where userid=:new.userid;
end;
------------------------------------模式触发器
create or replace trigger four_trigger after drop or create on schema
begin
INSERT INTO t_user(username,email)
VALUES( ORA_DICT_OBJ_NAME,
ORA_DICT_OBJ_TYPE);
end;
drop table test;
----------------------------------------------for update 和 for update of 字段
1
select * from TTable1 for update
锁定表的所有行,只能读不能写
2
select * from TTable1 where pkid = 1 for update
只锁定pkid=1的行
3
select * from Table1 a join Table2 b on a.pkid=b.pkid for update
锁定两个表的所有记录
4
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update
锁定两个表的中满足条件的行
5.
select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid
只锁定Table1中满足条件的行
-----------------------
for update 是把所有的表都锁点
for update of 根据of 后表的条件锁定相对应的表
-------------------------------------------------------------
多个表关联的时候for update 会锁定所有的表
for update of table_name.column_name 可以控制要锁定的表
--------------------
组成视图的各表中如果都有主键,那对视图和表for update of 效果基本一样。但如果各个基表中没有主键,更新视图就不允许了
select a.*,b.* from t_user a,t_user_address b where a.userid=b.userid for update
分享到:
相关推荐
- **性能提升技术**:提供了一些具体的例子和最佳实践,展示了如何利用Oracle 11g的新特性来进一步优化PL/SQL程序的性能。 #### 八、实战案例分析 - **案例研究**:通过实际案例来演示如何综合运用前面章节所学的...
### 绝对好的 Oracle PL/SQL 编程 #### 一、PL/SQL 程序设计简介 ##### 1.1 SQL 与 PL/SQL **1.1.1 什么是 PL/SQL?** PL/SQL(Procedure Language for SQL)是一种专门为 Oracle 数据库设计的过程化语言。它结合...
5. **代码模板**:预设一些常用的PL/SQL代码块,比如常见的查询、插入、更新、删除操作,用户只需通过快捷键或菜单选择即可插入到当前编辑器中。 6. **智能提示**:增强的代码提示功能,帮助用户更快地了解和记忆SQL...
### PL/SQL学习资料知识点详解 #### 一、PL/SQL概述 **1.1 PL/SQL的概念** PL/SQL(Procedural Language for SQL)是Oracle为支持其数据库产品而设计的一种专有的过程化语言。它将SQL命令与过程化语句结合在一起...
### PL/SQL程序设计知识点详解 #### 一、PL/SQL概述 **1.1 什么是PL/SQL?...以上是关于PL/SQL程序设计的一些核心知识点和概念,通过学习这些内容,可以更好地理解和掌握如何利用PL/SQL来开发高效的数据库应用程序。
PL/SQL对大小写不敏感(注意) 4. 标识符命名规则答: 1) 字母开头; 2) 后跟任意的 非空格字符 数字 货币符号( $ ) 下划线( _ ) 或 # ; 3) 最大长度为30个字符(八个字符左右最合适); 用来给对象命名(潜规则):...
- **2.9.1 简单数据插入例子**:展示如何使用PL/SQL插入数据到数据库表。 - **2.9.2 简单数据删除例子**:演示如何使用PL/SQL删除数据。 #### 三、PL/SQL流程控制语句 **3.1 条件语句** PL/SQL支持`IF`、`ELSIF`...
PL/SQL Developer是一款常用的Oracle数据库交互工具,它便于数据库开发人员编写和调试PL/SQL程序。通过使用插件技术,开发者可以设计出能够与PL/SQL Developer无缝通信的插件,以此来扩展该工具的功能。 3. 数据...
Oracle数据库系统中的PL/SQL(Procedural Language/Structured Query Language)是一种强大的过程化编程语言,它是Oracle数据库系统的核心组成部分,用于创建存储过程、函数、触发器和其他数据库对象。PL/SQL结合了...
Oracle PL/SQL 中游标声明中表名动态变化的方法 在 Oracle PL/SQL 中, quando 声明中表名动态变化是指在游标声明中使用动态表名,而不是硬编码的表名。这是一种灵活的方法,可以根据不同情况选择不同的表名。 在 ...
存储过程和函数是PL/SQL中最常用的对象类型之一,它们可以在数据库中存储并重复使用。 **6.1 创建函数** 函数是一种特殊的存储过程,它返回一个值。 **6.2 创建过程** 过程是一种没有返回值的存储过程。 **6.3 ...
### Oracle PL/SQL 编程经典例子解析 #### 一、PL/SQL 概述 PL/SQL(Procedural Language for SQL)是Oracle数据库专有的编程语言,它是在标准SQL的基础上进行了扩展,增强了编程能力。PL/SQL支持变量定义、流程...
根据提供的文件信息,本文将详细介绍PL/SQL中的一些常用函数及其用法,这些函数对于日常开发工作非常有帮助。 ### 1. ASCII 函数 ASCII 函数用于返回一个字符的 ASCII 值。例如: ``` SQL> SELECT ASCII('A') A, ...
1. **下载安装包**:在这个例子中,是名为"chinese.exe"的文件,这很可能是PL/SQL Developer的中文版安装程序。 2. **运行安装程序**:双击执行文件,按照向导提示进行安装。 3. **设置配置**:可能需要配置Oracle...
在Oracle PL/SQL中,创建一个无参数的过程(Procedure)是非常基础且常见的操作。例如,在文中给出的例子中: ```sql CREATE OR REPLACE PROCEDURE pro_lz IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello Everyone'); END;...
它是最常用的`SQL`语句。 - `SELECT * FROM tablename;`:选择表格中的所有列。 - `SELECT columnname FROM tablename;`:选择表格中的特定列。 - `SELECT columnname, columnname, ... FROM tablename;`:选择...
在PL/SQL中,常用的数据类型包括: - **Number**:用于数值类型的存储,如`v_passRate number(5,2)`表示一个最多五位数字、小数点后两位的数值。 - **Varchar2**:用于存储可变长度的字符串,如`v_result varchar2...
1. PL/SQL程序设计:PL/SQL是Oracle数据库的过程化扩展语言,提供了处理复杂业务逻辑的强大能力。在文档中提到了PL/SQL程序的设计,比如如何设置游标、使用变量、控制结构、错误处理以及存储过程、函数和包的建立与...
1. SELECT语句:这是最常用的SQL语句,用于从一个或多个表中检索数据。可以指定要选择的列、过滤条件(WHERE子句)、排序(ORDER BY子句)和分组(GROUP BY子句)。 2. JOIN操作:用于将两个或更多表的数据结合在...