pl/sql記錄型別
pl/sql記錄型別
declare
type emp_record_typ is record(name emp.ename%type,salary emp.sal%type);
emp_record emp_record_typ;
或者
dept_record dept%rowtype;
pl/sql記錄型別的示例
在oracle9i前,在內嵌SQL中,只能使用select into語句才可以直接引用記錄變數;
而在insert,update,delete語句中只能引用記錄變數的成員;從oracle9i開始,不僅
可以在select中直接引用記錄變數,而且在insert,delete,update中也可以直接引
用記錄變數;
1,在select into語句中使用pl/sql記錄
示例一:在select into語句中使用記錄變數
set serveroutput on
declare
--定義記錄變數型別
type emp_record_type is record(
name emp.name%type,
salary emp.sal%type,
dno emp.deptno%type);
--宣告一個記錄變數
emp_record emp_record_type;
begin
select ename,sal,deptno into emp_record
from emp where empno=&no;
dbms_output.put_line(emp_record.name);--輸出記錄變數某個成員
end;
/
示例二:在select into語句中使用記錄成員
declare
type emp_record_type is record(
name emp.ename%type,
salary emp.sal%type,
dno emp.deptno%type);
emp_record emp_record_type;
begin
select ename,sal into emp_record.name,emp_record.salary
from emp where empno=&no;
dbms_output.put_line(emp_record.name);
end;
/
2,在insert語句中使用pl/sql記錄
在oracle9i之前,如果使用pl/sql記錄插入資料,在VALUES子句中只能使用記錄成員;
從ORACLE9I開始,不僅可以在VALUES子句中使用記錄成員插入資料,而且可以直接
使用記錄變數插入資料;
示例一:在VALUES子句中使用記錄變數
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=50;--為記錄變數各個成員FU值
dept_record.dname:='adnub';
dept_record.loc:='beijing';
insert into dept values dept_record;--直接用記錄變數插入資料
end;
示例二:在values子句中使用記錄變數
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=60;
dept_record.dname:='sales';
insert into dept(deptno,dname) values(dept_record.deptno,dept_record.dname);
end;
3,在update語句中使用pl/sql記錄
(1)在set子句中使用記錄變數
示例如下:
declare
dept_record dept%rowtype;
begin
--為記錄變數各成員FU值
dept_record.deptno:=30;
dept_record.dname:='sales';
dept_record.loc:='shanghai';
--注意upDATE語句的ROW
update dept set row=dept_record where deptno=30;--直接使用記錄變數在set
END;
/
(2)在SET子句中使用記錄成員
declare
dept_record dept%rowtype;
begin
dept_record.loc:='ax';
update dept set loc=dept_record.loc where deptno=10;
end;
4,在delete語句中使用pl/sql記錄
示例如下:
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=50;
delete from dept where deptno=dept_record.deptno;
end;
declare
type emp_record_typ is record(name emp.ename%type,salary emp.sal%type);
emp_record emp_record_typ;
或者
dept_record dept%rowtype;
pl/sql記錄型別的示例
在oracle9i前,在內嵌SQL中,只能使用select into語句才可以直接引用記錄變數;
而在insert,update,delete語句中只能引用記錄變數的成員;從oracle9i開始,不僅
可以在select中直接引用記錄變數,而且在insert,delete,update中也可以直接引
用記錄變數;
1,在select into語句中使用pl/sql記錄
示例一:在select into語句中使用記錄變數
set serveroutput on
declare
--定義記錄變數型別
type emp_record_type is record(
name emp.name%type,
salary emp.sal%type,
dno emp.deptno%type);
--宣告一個記錄變數
emp_record emp_record_type;
begin
select ename,sal,deptno into emp_record
from emp where empno=&no;
dbms_output.put_line(emp_record.name);--輸出記錄變數某個成員
end;
/
示例二:在select into語句中使用記錄成員
declare
type emp_record_type is record(
name emp.ename%type,
salary emp.sal%type,
dno emp.deptno%type);
emp_record emp_record_type;
begin
select ename,sal into emp_record.name,emp_record.salary
from emp where empno=&no;
dbms_output.put_line(emp_record.name);
end;
/
2,在insert語句中使用pl/sql記錄
在oracle9i之前,如果使用pl/sql記錄插入資料,在VALUES子句中只能使用記錄成員;
從ORACLE9I開始,不僅可以在VALUES子句中使用記錄成員插入資料,而且可以直接
使用記錄變數插入資料;
示例一:在VALUES子句中使用記錄變數
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=50;--為記錄變數各個成員FU值
dept_record.dname:='adnub';
dept_record.loc:='beijing';
insert into dept values dept_record;--直接用記錄變數插入資料
end;
示例二:在values子句中使用記錄變數
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=60;
dept_record.dname:='sales';
insert into dept(deptno,dname) values(dept_record.deptno,dept_record.dname);
end;
3,在update語句中使用pl/sql記錄
(1)在set子句中使用記錄變數
示例如下:
declare
dept_record dept%rowtype;
begin
--為記錄變數各成員FU值
dept_record.deptno:=30;
dept_record.dname:='sales';
dept_record.loc:='shanghai';
--注意upDATE語句的ROW
update dept set row=dept_record where deptno=30;--直接使用記錄變數在set
END;
/
(2)在SET子句中使用記錄成員
declare
dept_record dept%rowtype;
begin
dept_record.loc:='ax';
update dept set loc=dept_record.loc where deptno=10;
end;
4,在delete語句中使用pl/sql記錄
示例如下:
declare
dept_record dept%rowtype;
begin
dept_record.deptno:=50;
delete from dept where deptno=dept_record.deptno;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-708174/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- PL/SQL第一章--概述及變數型別SQL變數型別
- Oracle PL/SQLOracleSQL
- PL/SQL 宣告SQL
- OCP 複習筆記之PL/SQL (3)筆記SQL
- OCP 複習筆記之PL/SQL (2)筆記SQL
- OCP 複習筆記之PL/SQL (4)筆記SQL
- OCP 複習筆記之PL/SQL (5)筆記SQL
- OCP 複習筆記之PL/SQL (1)筆記SQL
- PL/SQL 運算子SQL
- PL/SQL 條件SQL
- PL/SQL 迴圈SQL
- PL/SQL 遊標SQL
- pl/sql to_dateSQL
- map 型別 - Go 學習記錄型別Go
- 【Java】Java新特性--Records記錄型別Java型別
- 資料型別 - Go 學習記錄資料型別Go
- oracle學習筆記(十七) PL/SQL高階應用Oracle筆記SQL
- 記錄oss連結型別PDF預覽型別
- CSS基礎概念記錄之元素型別CSS型別
- Oracle PL/SQL塊簡介OracleSQL
- ultraedit高亮顯示pl/sqlSQL
- SQL 資料型別SQL資料型別
- 記錄一個sqlSQL
- C#學習 [型別系統] 記錄(14)C#型別
- DNS常見資源記錄型別詳解DNS型別
- PL/SQL程式設計急速上手SQL程式設計
- Oracle 的PL/SQL語言使用OracleSQL
- PL/SQL 條件控制語句SQL
- SQL的連線型別SQL型別
- SQL:查詢每個類別最新的5條記錄SQL
- oracle學習筆記(十五) PL/SQL語法結構以及使用Oracle筆記SQL
- [20240607]PL/SQL中sql語句的註解.txtSQL
- 中科三方:DNS解析記錄型別詳解DNS型別
- DNS解析記錄有哪些型別?分別代表什麼含義?DNS型別
- SQL優化工作記錄SQL優化
- Laravel sql 日誌記錄LaravelSQL
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫