Oracle中游标Cursor基本用法详解
|
查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 PL/SQL中SELECT语句只返回一行数据。如果超过一行数据,那么就要使用显式游标(对游标的讨论我们将 %TYPE属性 在PL/SQL中可以将变量和常量声明为内建或用户定义的数据类型,以引用一个列名,同时继承他的数据类 例: 不但列名可以使用%TYPE,而且变量、游标、记录,或声明的常量都可以使用%TYPE。这对于定义相同数据类 /
V_A=10 V_B=15 V_C=
PL/SQL procedure successfully completed.
SQL>
其他DML语句其它操作数据的DML语句是:INSERT、UPDATE、DELETE和LOCK TABLE,这些语句在PL/SQL中的语法与在SQL中 论过DML语句的使用这里就不再重复了。在DML语句中可以使用任何在DECLARE部分声明的变量,如果是嵌套 例: DML语句的结果 当执行一条DML语句后,DML语句的结果保存在四个游标属性中,这些属性用于控制程序流程或者了解程序 SQL%NOTFOUND,SQL%ROWCOUNT三个属性.SQL%FOUND,SQL%NOTFOUND是布尔值,SQL%ROWCOUNT是整数值。 SQL%FOUND和SQL%NOTFOUND在执行任何DML语句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在执行DML语句后,SQL%FOUND的属性值将是: . TRUE :INSERT 当SQL%FOUND为TRUE时,SQL%NOTFOUND为FALSE。 SQL%ROWCOUNT 在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功 SQL%ISOPEN SQL%ISOPEN是一个布尔值,如果游标打开,则为TRUE,如果游标关闭,则为FALSE.对于隐式游标而言SQL% 标在DML语句执行时打开,结束时就立即关闭。 事务控制语句 事务是一个工作的逻辑单元可以包括一个或多个DML语句,事物控制帮助用户保证数据的一致性。如果事务控制逻辑单元中的任何一个DML COMMIT语句终止事务,永久保存数据库的变化,同时释放所有LOCK,ROLLBACK终止现行事务释放所有LOCK, NT用于设置中间点,当事务调用过多的数据库操作时,中间点是非常有用的,SET TRANSACTION用于设置事 显式游标 查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句。PL/SQL管理隐式 使用游标 这里要做一个声明,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的 声明游标 语法: CURSOR cursor_name IS select_statement; 在PL/SQL中游标名是一个未声明变量,不能给游标名赋值或用于表达式中。 例: 2000 ORDER BY ename; ........ BEGIN 在游标定义中SELECT语句中不一定非要表可以是视图,也可以从多个表或视图中选择的列,甚至可以使用* 打开游标 使用游标中的值之前应该首先打开游标,打开游标初始化查询处理。打开游标的语法是: cursor_name是在声明部分定义的游标名。 例: 关闭游标 语法: 例: 从游标提取数据 从游标得到一行数据使用FETCH命令。每一次提取数据后,游标都指向结果集的下一行。语法如下: FETCH cursor_name INTO variable[,...] 对于SELECT定义的游标的每一列,FETCH变量列表都应该有一个变量与之相对应,变量的类型也要相同。 例: 这段代码无疑是非常麻烦的,如果有多行返回结果,可以使用循环并用游标属性为结束循环的条件,以这 记录变量 定义一个记录变量使用TYPE命令和%ROWTYPE,关于%ROWsTYPE的更多信息请参阅相关资料。 记录变量用于从游标中提取数据行,当游标选择很多列的时候,那么使用记录比为每列声明一个变量要方 当在表上使用%ROWTYPE并将从游标中取出的值放入记录中时,如果要选择表中所有列,那么在SELECT子句 例: %ROWTYPE也可以用游标名来定义,这样的话就必须要首先声明游标: 带参数的游标 与存储过程和函数相似,可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情 CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement; 定义参数的语法如下:
|
