易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle存储过程,函数。

--在应用程序中往往有些固定的数据库操作,我们常常为致谢固定的操作定义了一些存储过程。这些存储过程不仅
--可以简化客户端的应用程序的开发和维护。而且还可以提高应用的运行性能。
-- 创建存储过程的语法。
create [or replace] procedure <过程名>[(参数)]
is|as
[局部变量声明]
begin
可执行语句
exception
异常处理
end
--在定义中 IS|AS 可以根据习惯选择IS 或者AS 除了定义部分。其余的语法同PL/SQL的语法。

例: 。
-- 1 ①一个无参的存储过程。

create or replace procedure proc_1--proc_1存储过程名称
is
i number(3);--定义变量
begin
i:=100;
dbms_output.put_line(i);
end;
--②调用存储过程。
begin
proc_1;
end;
--一个无参数的存储过程创建完毕
2 一个有参数的存储过程
存储过程定义的时候可以使用参数也可以不实用参数。

参数类型
· 在PL/SQL过程中,可以有3种类型的参数。
· IN参数:读入参数,主程序向过程中传递参数。
· OUT参数:输出参数,过程向主程序传递参数。
· IN OUT参数:这个参数,过程与主程序双向交流数据。
如果存储过程有OUT 或者IN OUT 类型的参数,那么存储过程就只能在PL/SQL
中被调用。不能使用EXECUTE 或者CALL调用。

一个输入参数的例子

create or replace procedure proc_2(myno in number)
is emprow emp%rowtype;--定义一个行类型的变量
begin
select * into emprow from emp where empno=myno;
dbms_output.put_line('员工姓名:'||emprow.ename||'员工薪水'||emprow.sal);
end;
--调用这个存储过程
begin
proc_2(7369);
end;

既有输入参数 又有输出参数

create or replace procedure proc_3(myno in number,mysal out emp.sal%type, myname out emp.ename%type)
is
emprow emp%rowtype;
begin
select sal,ename into mysal,myname from emp where empno=myno;
end;
--调用这个存储过程
declare
tempsal emp.sal%type;
empname emp.ename%type;
begin
proc_3(7369,tempsal,empname);
dbms_output.put_line('员工姓名'||empname||'员工薪水'||tempsal);
end;



相关文档:

【转帖】SQL Oracle删除重复记录

1.Oracle删除重复记录.
删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录.
delete from people
where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not i ......

【转】ORACLE用户连接的管理

用系统管理员,查看当前数据库有几个用户连接:

SQL> select username,sid,serial# from v$session;

如果要停某个连接用

SQL> alter system kill session 'sid,serial#';

 ......

oracle 中的exception

  1、异常的优点
  
  如果没有异常,在程序中,应当检查每个命令的成功还是失败,如
  BEGIN
  SELECT ...
  -- check for ’no data found’ error
  SELECT ...
  -- check for ’no data found’ error
  SELECT ...
  -- check for ’no data found’ err ......

【oracle序列专题】(转载)

ORACLE没有象SQL SERVER中一样的自增加字段,要实现只能通过SEQUENCE来实现
1.创建序列:
create sequence your_seq
nocycle
maxvalue 9999999999
start with 1;
2.使用触发器实现自增:
create or replace trigger your_seq_tri
before insert on your_table1 for each row
declare
next_id number;
begin
se ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号