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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL集合和記錄-集合型別SQL型別
- Pl/SQL 自定義型別SQL型別
- pl/sql集合型別(一)SQL型別
- PL/SQL開發記錄SQL
- pl/sql記錄表(一)SQL
- pl/sql集合型別_varray(二)SQL型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-使用者定義的PL/SQL子型別SQL資料型別
- 在PL/SQL中使用日期型別SQL型別
- PL/SQL複合資料型別SQL資料型別
- PL/SQL中char型別的暗門SQL型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-有限制的子型別SQL資料型別
- plsql記錄型別SQL型別
- PLSQL Language Referenc-PL/SQL集合和記錄-使用記錄更新行SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-不同的最值大小SQL資料型別
- 記錄Record、PL/SQL表和二維陣列SQL陣列
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- PL/SQL 中如何正確選擇遊標型別SQL型別
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄比較-將記錄插入到表中SQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-ROWID和UROWID變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-CHAR和VARCHAR2變數SQL資料型別變數
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- 域名解析的記錄型別:A記錄、CNAME、MX記錄、NS記錄型別
- PL/SQL第一章--概述及變數型別SQL變數型別
- 全面探討PL/SQL的複合資料型別(轉)SQL資料型別
- [PL/SQL]10g PL/SQL學習筆記(一)SQL筆記
- [PL/SQL]10g PL/SQL學習筆記(二)SQL筆記
- [PL/SQL]10g PL/SQL學習筆記(三)SQL筆記
- PLSQL Language Referenc-PL/SQL集合和記錄-多維集合SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-巢狀表SQL巢狀
- map 型別 - Go 學習記錄型別Go
- PL/SQL 學習日記SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合構造器SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列SQL陣列
- pl/sql %type和%rowtype區別SQL
- 資料型別 - Go 學習記錄資料型別Go
- JS資料型別轉換記錄JS資料型別
- PL/SQL學習筆記-1SQL筆記