PL/SQL 存储函数和过程

--存储过程
 1.不带参:
   create or replace procedure 存储过程名
as|is
--说明部分
begin
--执行的语句;
end;

调用存储过程

1 execute 存储过程名
   --exec 存储过程名

2  在另外的plsql语句中直接调用

begin
   存储过程名;
   存储过程名;
   存储过程名;
end;

create or replace procedure p_dept
as
begin
  dbms_output.put_line(‘存储过程‘);
end;

2.带参的存储过程

create or replace procedure 存储过程名 (参数 in|out 参数类型)
as|is
--说明部分
begin
--执行的语句;
end;

--eg:
create or replace procedure p_dept1 (nuo in number)
as
--说明部分
v_english dept.english%type;
begin
--执行的语句;

--修改前的分数
select english into v_english from dept where id=nuo;
--修改后的分数
update dept set english=english+10 where id=nuo;
--打印
dbms_output.put_line(‘修改前分数为:‘||v_english||‘修改后的分数为‘||(v_english+10));

end;
in和out的区别

--创建一个不带参的函数

create or replace function f_dept
--返回的是一个类型
return number
as
--说明部分
--定义一个变量来接收分数
v_english dept.english%type;

begin
  select english into v_english from dept where name1=‘杨雾‘;
  dbms_output.put_line(v_english);
  return v_english;
end;

--存储过程调用out方法实现返回多个值
create or replace procedure p_dept2 (nuo in number,
                                     v_name out varchar2,
                                     v_english out number,
                                     v_math out number)

as
--说明部分
begin
--执行的语句;

--修改前的分数
select name1,english,math into v_name,v_english,v_math from dept where id=nuo;

end;
-- 存储过程
create or replace procedure p_score
is v_math number;
begin
  select math into v_math from scores where id=3;
  dbms_output.put_line(v_math);
end;

-- 带参储存过程
create procedure p_score2(digital in number)
as v_chinese number;
begin
  select chinese into v_chinese from scores where id=digital;
  dbms_output.put_line(v_chinese);
end;

--存储过程调用out方法返回多个值
create or replace procedure
p_score3(v_id in number,v_english out number,v_chinese out number)
as v_math number;
begin
  select math,chinese,english into v_math,v_chinese,v_english from scores
  where id = v_id;
  dbms_output.put_line(‘Math:‘||v_math||‘,‘||‘Chinese:‘||v_chinese||‘,‘||‘English:‘||v_english);
end;

-- 函数
create or replace function f_score
return number
as
v_english scores.english%type;
begin
  select english into v_english from scores where id = 5;
  return v_english;
end;

-- 带参函数
create or replace function f_score2(digital in number)
return scores.english%type
as
v_english number;
begin
  select english into v_english from scores where id = digital;
  return v_english;
end;
时间: 2024-10-10 09:46:53

PL/SQL 存储函数和过程的相关文章

Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下面的例子中就包含了TO

ORACLE PL/SQL 字符串函数、数学函数、日期函数

ORACLE PL/SQL 字符串函数.数学函数.日期函数 --[字符串函数] --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符串从前面取三个(0开始) select Name,substr(Name,0,3) from t1; --字符串从后面取三个 select Name,substr(Name,-3

存储函数和过程

1 ORACLE提供可以把PL/SQL 程序存储在数据库中,并可以在任何地方运行它.这样就叫存储过程或函数.过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输出,输出参数或输入/输出参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据. 2 --存储函数大致格式 create or replace function func_name(dept_id number,salary number) return numbe

PL/SQL之--函数

一.函数 函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序.oracle处理使用系统提供的函数之外,用户还可以自己定义函数.函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值.通常用于返回特定的数据. 函数语法如下: create or replace function 函数名称 ( 参数名称 测试类型, 参数名称 测试类型 ) return 数据类型 is 自定义变量名 数据类型 begin 处理语句; return 自定义变量名; exception

PL/SQL自定义函数

从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数据类型,而非PL/SQL特殊的类型 从SQL表达式中调用的函数不能包含DML语句 从在表T上的UPDATE/DELETE语句中调用的函数,函数内容不能包含在同一个表T上的DML 从在表T上的UPDATE或DELETE语句中调用的函数,函数内容不能查询同一个表 从SQL语句中调用的函数不能包含结束事物

oracle pl/sql split函数

在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号. 程序员需要将序号转名称后按照相同的格式输出,如:“张三.李四.王五”. Java程序员通用的做法是在service层将接收的"1001,1002,1003"拆分(使用java split函数),然后封装List,将List传递给DAO, 再传递给ORM持久层的xml调用sql执行,sq

pl/sql之编写分页过程

--开发一个包 --建立一个包,在该包中,我定义类型test_cursor,是个游标. 如下: Sql代码 create or replace package testpackage as TYPE test_cursor is ref cursor; end testpackage; --开始编写分页过程 create or replace procedure fenye (table_name in varchar2, page_size in number,        --每页显示的记

PL/SQL 06 函数 function

--函数 create or replace function  函数名称(参数1 类型1,参数2 类型2,...)  return 数据类型as  变量.常量声明;begin  代码;end; create or replace function  fun_change_name(name varchar2)  return varchar2as  result varchar2(20);begin  result:=substr(name,2)||substr(name,1,1);  ret

PL/SQL编程—函数

SQL> select * from mytest; ID NAME PASSWD SALARY ----- -------------------- -------------------- -------------------------------------------------------------------------------- 1 gagaga 123 100 2 gaodingle!!!! 123 100 3 gagaga 123 100 SQL> SQL>