PL-SQl语句例子

[size=x-large][color=darkblue]--通过groupby实现
select e.deptno ,count(*) 部门人数 from emp e group by e.deptno
--通过字段作为自查询来实现
select dname ,(select count(*) from emp where emp.deptno=dept.deptno) 部门人数 from dept
--通过from后面作为自查询来实现
select * from emp where rownum<=2--查询前两条记录(只能跟<进行关联)
select * from (select * from emp order by sal desc) where rownum<=2--查询工资最大的两个人的名字
--分页,希望每次页面显示的时候,都之查询需要的记录
select * from (select rownum as num,emp.* from emp) where num>=4 and num<=7


--PL-sql


--最简单的PL-SQl语句块
declare
emp_no number(3):=26;
ename VARCHAR2(20);
begin
ename:='test';
dbms_output.put_line(ename);
dbms_output.put_line('触发器开始执行'||emp_no);
end;

declare
emo_no number(3):=20;--定义常量
ename varchar2(20);--定义变量
begin
ename:='您好';--为变量赋值
dbms_output.put_line(ename);
dbms_output.put_line('值是'||emo_no);
end;


--如何使用查询语句(通过与into语句结合使用)
declare
deptno dept.deptno % TYPE;--定义常量
dname dept.dname % TYPE;--定义变量
begin
select deptno,dname into deptno,dname from dept where deptno=10 ;
dbms_output.put_line(deptno);
dbms_output.put_line(dname);
end;


--如何使用查询语句(作为游标的一部分使用使用)
DECLARE
cursor emp_cursor is
select empno,ename from emp where deptno=10 ;
begin

for emp in emp_cursor loop
dbms_output.put_line('员工名:'||emp.ename||' '||'员工号:'||emp.empno);
end loop;
end;


--循环语句的使用
declare
x NUMBER:=0;
y NUMBER:=0;
BEGIN
for v in 1..10 loop
x:=x+10;
end loop;
y:=y+ x;
dbms_output.put_line(y);
end;


--异常
--自定义异常
declare
y number(3):=52;
myexception exception;--自定义异常名为myexception
begin
if y not in (0,1,2,8) then
raise myexception;--如果y不在(0,1,2,8)之中,就抛出异常
end if;
EXCEPTION when myexception then
dbms_output.put_line('y不在0,1,2,8之中');
end;


--游标:PL-SQL处理多行数据的机制
--显式游标
declare
deptid NUMBER;
dname VARCHAR2(10);
cursor dept_cursor is
select deptno,dname from dept ;
begin
open dept_cursor;
fetch dept_cursor into deptid,dname;
WHILE dept_cursor%found loop
fetch dept_cursor into deptid,dname;
dbms_output.put_line(deptid|| dname);
end loop;
close dept_cursor;
end;


--for光标,不需要打开和关闭游标,不需要定义变量

declare
cursor dept_cursor is
select deptno,deptname from dept ;
begin

for r in dept_cursor loop
dbms_output.put_line(r.deptno||' '|| r.deptname);
end loop;
end;


--存储过程
--
create or replace procedure add_dept(deptno NUMBER,deptname VARCHAR2,depttype VARCHAR2)
is
begin
insert into emp(deptno,deptname,depttype) values(deptno,deptname,depttype);
end;


--实现出入部门id打印部门名称
create or replace procedure getdeptname(no NUMBER,dname out varchar2) is
begin
select deptname into dname from dept where deptno=no;
dbms_output.put_line('名字是'||dname);
end;

--实现出入部门id打印部门人数

create or replace procedure getempcount(no NUMBER,dcount out number) is
begin
select count(*) into dcount from emp3 group by deptno having deptno=no;
dbms_output.put_line('人数为是'||dcount);
end;
--执行存储过程
declare
dcount number(10);
begin
getempcount(2,dcount);
end;

select deptno, count(*) from emp3 group by deptno having deptno=2;
--删除存储过程
drop procedure procedure_name;


--触发器
--当执行插入语句的时候,执行触发器,对id字段自加1
create table cls(
id number(2),
name varchar2(10));

create sequence seq0

CREATE OR REPLACE TRIGGER CLS_INSERT_LU
BEFORE INSERT ON CLS
FOR EACH ROW
BEGIN
select seq0.nextval into :new.id from dual;
END;
--测试
insert into cls(name) values ('ka');
insert into cls(name) values ('java');
select * from cls
drop TRIGGER CLS_INSERT_LU

--函数
--
CREATE OR REPLACE
FUNCTION F
( cid IN NUMBER
) RETURN NUMBER AS
c1 NUMBER;
BEGIN
select count(*) into c1 from emp3 where deptno=cid;
return c1;

END F;

--调用函数
select F(1) from dual


--包的使用
create package yy is
function x(cid number) return NUMBER;
procedure removeemp(did number);
end;

--定义包体
create or replace package body yy is
--实现函数x
FUNCTION x
( cid NUMBER
) RETURN NUMBER AS
c1 NUMBER;
BEGIN
select count(*) into c1 from emp3 where deptno=cid;
return c1;
END x;
--实现存储过程removeemp
procedure removeemp(did number) is
begin
delete from dept where deptno=did;
end;

end;


--调用包中的函数
select yy.x(1) from dual;


--调用包中的存储过程
begin
yy.removeemp(2);
end;


select * from dept[/color][/size]
下载前必看:https://pan.quark.cn/s/a4b39357ea24 在本资料中,将阐述如何运用JavaScript达成单击下拉列表框选定选项后即时转向对应页面的功能。 此种技术适用于网页布局中用户需迅速选取并转向不同页面的情形,诸如网站导航栏或内容目录等场景。 达成此功能,能够显著改善用户交互体验,精简用户的操作流程。 我们须熟悉HTML里的`<select>`组件,该组件用于构建一个选择列表。 用户可从中选定一项,并可引发一个事件来响应用户的这一选择动作。 在本次实例中,我们借助`onchange`事件监听器来实现当用户在下拉列表框中选定某个选项时,页面能自动转向该选项关联的链接地址。 JavaScript里的`window.location`属性旨在获取或设定浏览器当前载入页面的网址,通过变更该属性的值,能够实现页面的转向。 在本次实例的实现方案里,运用了`eval()`函数来动态执行字符串表达式,这在现代的JavaScript开发实践中通常不被推荐使用,因为它可能诱发安全问题及难以排错的错误。 然而,为了本例的简化展示,我们暂时搁置这一问题,因为在更复杂的实际应用中,可选用其他方法,例如ES6中的模板字符串或其他函数来安全地构建和执行字符串。 具体到本例的代码实现,`MM_jumpMenu`函数负责处理转向逻辑。 它接收三个参数:`targ`、`selObj`和`restore`。 其中`targ`代表要转向的页面,`selObj`是触发事件的下拉列表框对象,`restore`是标志位,用以指示是否需在转向后将下拉列表框的选项恢复至默认的提示项。 函数的实现通过获取`selObj`中当前选定的`selectedIndex`对应的`value`属性值,并将其赋予`...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值