存储过程与函数
来源:互联网 发布:千方百计医药软件 编辑:程序博客网 时间:2024/05/20 10:12
存储过程:没有直接返回值,主要用于执行操作。
① 创建语法
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])]{IS | AS}BEGIN < procedure_body >END;/
② is与as有什么区别?
- 在存储过程与函数中,is与as没有任何区别
- 在视图中只能用as,在游标中只能用is
③ 创建存储过程的一些小细节
- 无参存储过程定义时存储过程名后面一定不能加括号!!!报错:Warning: Function created with compilation errors
- 无参存储过程调用时可以加括号也可以不用加,可以通过PL/SQL调用,也可以通过execute关键字调用
- 有参存储过程的参数类型一定不能指定精度!!!否则报错:Warning: Procedure created with compilation errors
- 利用 表名.字段%type 可以取到表中某个字段的具体类型,方便给我们声明的变量时设置它的类型 如 price page_books.price%type;
- 无参存储过程调用时可以加括号也可以不用加,可以通过PL/SQL调用,也可以通过execute关键字调用
- 有参存储过程的参数类型一定不能指定精度!!!否则报错:Warning: Procedure created with compilation errors
- 利用 表名.字段%type 可以取到表中某个字段的具体类型,方便给我们声明的变量时设置它的类型 如 price page_books.price%type;
④ 利用PL/SQL DEVELOPER工具执行存储过程时,如果存储过程中有输出内容想要看到,必须先执行下面的命令:
set serveroutput on;
⑤ 例:创建有参存储过程
CREATE PROCEDURE addBook(title in varchar2,price in number,author in varchar2,pt in date)ASBEGINinsert into page_books (title,price,author,publish_date) values(title,price,author,pt);END;/
调用有参存储过程
- 方式一
DECLAREtitle page_books.title%type := 'title18';price page_books.price%type := 50.55;author page_books.author%type := 'author18';pt page_books.publish_date%type := sysdate;BEGINaddBook(title,price,author,pt);END;/- 方式二
EXECUTE addBook('book19',100,'author19',sysdate);
例:创建无参存储过程
CREATE PROCEDURE sayHelloISBEGINDBMS_OUTPUT.put_line('Hello!');END;/
调用无参存储过程
- 方式一
BEGINsayHello();END;/- 方式二
BEGINsayHello;END;/- 方式三
EXECUTE sayHello;-方式四
EXECUTE sayHello();
函数:返回一个值,主要用于计算并返回一个值。
①创建函数的小细节
- 函数必须包含一个return语句
- RETURN 子句指定要在函数返回的数据类型
- 函数定义的时候,无参函数名后面一定不能加括号!!!报错:Warning: Function created with compilation errors
- 函数调用的时候无参函数方法名后面可以不用加括号,有参必须加
- RETURN 子句指定要在函数返回的数据类型
- 函数定义的时候,无参函数名后面一定不能加括号!!!报错:Warning: Function created with compilation errors
- 函数调用的时候无参函数方法名后面可以不用加括号,有参必须加
② 例:创建有参函数
CREATE FUNCTION mul(x in double precision,y in double precision)RETURN double precisionISresult double precision;BEGINresult := x*y;RETURN result;END;/
调用有参函数
DECLARE a double precision;BEGINa:=mul(2,10);DBMS_OUTPUT.put_line(a);END;/
例:创建无参函数
CREATE FUNCTION totalBooksRETURN number IStotalBooks number;BEGINselect count(id) INTO totalBooks from page_books;RETURN totalBooks;END; /
调用无参函数
DECLAREa number;BEGINa:=totalBooks();DBMS_OUTPUT.put_line(totalBooks);END;/
关于上述用到的page_books表的相关信息如下图
阅读全文
0 0
- 函数与存储过程
- 存储过程与函数
- 存储过程与函数
- 函数与存储过程
- 函数与存储过程
- 函数与存储过程
- 存储过程与函数
- 存储过程与函数
- 存储过程与函数
- 存储过程与存储函数
- mysql存储过程与函数------创建存储过程与函数
- 存储过程与函数比较
- 存储过程与函数比较
- 内置函数与存储过程
- 内置函数与存储过程
- Oracle存储过程与函数
- oracle 存储过程与函数
- MYSQL存储过程与函数
- JAX-RS客户端WebClient的使用教程
- TRUNCATE命令
- 图片验证码(Struts2中使用)
- 【软工】开发模型
- values资源之styles
- 存储过程与函数
- Java :方法 操作的是否是存在相同地址空间的值
- 关于Android百度地图开放式只出现网格式不加载的原因
- Java中存储金额用什么数据类型?
- unity项目实战(第一个)
- JAVA随笔(2)
- 数据挖掘学习------------------4-分类方法-6-判别分析
- C语言趣味一百道 第18题 2017_12_21
- C语言位运算符:与、或、异或、取反、左移和右移