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;
相关文档:
1.数据库归档模式:
* 非归档模式:当数据库数据只读不会改变时,数据不会改变,数据库适合用非归档模式, 这样提高性能
&nb ......
有了游标,就可以不用每条数据去检查是否符合条件,先看一下下面的:
--游标使用(游标其实是一个放入内存临时表)
declare
money cms3_simcard.card_fee%type :=0; --定义与表字段相同类型
cursor mycursor is --定义游标
select ......
在使用Oracle中使用Rownum,会有些误解,现整理下网友们的文章,希望能有所帮助,呵呵
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、<=、!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果 ......
今天在一台2003server上安装 9i客户端。
配置了tns之后连接,报错 "ORA-06413 连接未打开错误".
把其它服务器的tnsname.ora直接拷贝过来也不行。
后来查了一下资料,说应用程序路径里边有特殊字符。
这才恍然大悟,两年前这个问题已经折磨过我一次了,脑子不好,竟然给忘了。
原因就是64位系统环境下安装oracle,oralc ......
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
......