您的位置:首页 > 数据库

PL/SQL-1 块的使用

2012-03-09 07:42 218 查看
--------------------------------------------------------------------------

**************************************************************************

第一部分:PL/SQL块的使用:

**************************************************************************

--------------------------------------------------------------------------

--案例01:简单的变量使用

declare

eno varchar2(10);

ename varchar2(20);

begin

eno:='9527';

ename:='wind';

dbms_output.put_line('eno:' ||eno ||'ename:' ||ename);

end;

--案例02:定义并常规赋值变量

declare

eno varchar(20);

ename varchar(20);

sid constant varchar(10):='110' ;

v_valid boolean default false;

begin

eno:='9527';

ename:='wind';

dbms_output.put_line('eno:' ||eno ||', ename:' ||ename ||' ,sid'||sid);

end;

--案例03:通过查询表赋值变量

declare

eno varchar(20);

ename varchar(20);

sid constant varchar(10):='110' ;

v_valid boolean default false;

begin

select empno, ename into eno, ename from emp where empno=7788; /*一定使用where指明条件*/

dbms_output.put_line('eno:' ||eno ||', ename:' ||ename ||' ,sid'||sid);

end;



--案例04:PL/SQL块

--基础01:%rowtype

declare

name emp%rowtype; /*表示变量name和emp表的一行的所有列属性相同*/

begin

select * into name from emp where empno=7788; /*select后只能使用*,把该行的所有列赋值给变量*/

dbms_output.put_line('name'||name.ename); /*name.ename即:变量中的列名ename*/

end;

---or

declare

name emp%rowtype; /*表示变量name和emp表的一行的所有列属性相同*/

begin

select * into name from emp where empno=7788; /*select后只能使用*,把该行的所有列赋值给变量*/

dbms_output.put_line('name:'||' ' || name.ename ); /*name.ename即:变量中的列名ename*/

dbms_output.put_line('work no:' ||name.empno);

dbms_output.put_line('emp job:' ||name.job);

dbms_output.put_line('salary:' ||name.sal);

end;

/



--基础02:%type

declare

nm emp.ename%type; --表示与表emp表中的ename列属性相同

no emp.empno%type;

begin

select ename, empno into nm, no from emp where empno=7788; /*select后使用部分字段列赋值给变量*/

dbms_output.put_line('name:'||' ' ||nm);

end;

--完整案例:

declare

eno emp.empno%type;

name emp.ename%type;

emprow emp%rowtype; --与emp表中的所有行属性相同

begin

select empno, ename into eno, name from emp where empno=7369;

select * into emprow from emp where empno=7788; /*将一行数据的所有列赋值给变量*/

dbms_output.put_line('tmpno:'||eno||' '||'cname:' ||name);

dbms_output.put_line('empno:'||emprow.empno||' '||'ename:' ||emprow.ename);

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;

----or

declare

eno emp.empno%type;

name emp.ename%type;

emprow emp%rowtype; --与emp表中的所有行属性相同

begin

select empno, ename into eno, name from emp where empno=7369;

dbms_output.put_line('tmpno:'||eno||' '||'cname:' ||name);

select * into emprow from emp where empno=7799; /*将一行数据的所有列赋值给变量*/

dbms_output.put_line('empno:'||emprow.empno||' '||'ename:' ||emprow.ename);

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;

--案例05:日期转换

declare

thisday date;

begin

thisday:=sysdate;

dbms_output.put_line('this is day:' ||to_char(thisday,'yyyy-mm-dd hh24:mi:ss'));

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;

--案例06:比较日期

declare

thisday date;

begin

thisday:=sysdate;

if thisday >'20-3月-2004' then --必须按照这样的日期格式。或案例07.

dbms_output.put_line('this is day:' ||to_char(thisday,'yyyy-mm-dd'));

else

dbms_output.put_line('this is no day');

end if;

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;

--案例07:

declare

thisday date;

begin

thisday:=sysdate;

if thisday <to_date('2006-03-12', 'yyyy-mm-dd' )then /*通过格式转换,最好按照这样的转换*/

dbms_output.put_line('this is day:' ||to_char(thisday,'yyyy-mm-dd'));

else

dbms_output.put_line('this is no day');

end if;

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: