oracle创建函数和调用存储过程和调用函数的例子(区别)

创建函数:

格式:create or replace function func(参数 参数类型)

Return number

Is

Begin

--------业务逻辑---------

End;

--创建函数
create or replace function func (dno number)
return number
is
t_max number;
begin
  select max(sal) into t_max from emp t
  where deptno = dno;
  return t_max;
end ;

--调用存储过程和调用函数的例子(区别)
declare
t_maxsal number;
begin
  t_maxsal:=func(10);
  dbms_output.put_line(t_maxsal);
  dbms_output.put_line(func(10));
end;

create or replace procedure proc(dno in number,maxsal out number)
is
      t_maxsal number;
begin
  select max(sal) into t_maxsal from emp where deptno = dno;
  maxsal:=t_maxsal;
end;

declare
t_sal number := 0;
begin
  proc(10,t_sal);
  dbms_output.put_line(t_sal);
end;

create or replace function func(a number, a number)
return number
is
t_result number := 0;
begin
  t_result:=a + b;
  return t_result;
end;

begin
  dbms_output.put_line(func(10, 20));
end;
--删除函数
drop function func;
--删除存储过程
drop procedure proc;

--创建包(包里可以写存储过程和函数)
create or replace package  pack

procedure proadd(a number, b number)
procedure prosub(a number, b number)
end pack;

begin
  pack.proadd(3,1);
  pack.prosub(3,2);
end;

注:以上调用都是指在plsql里的sql窗口调用

原文地址:https://www.cnblogs.com/hkdpp/p/8301876.html

时间: 2024-09-29 15:39:08

oracle创建函数和调用存储过程和调用函数的例子(区别)的相关文章

在Java语言中调用存储过程、存储函数、包头、包体

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { private static Stri

sqlserver 只有函数和扩展存储过程才能从函数内部执行

一个SQLServer的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行". 原因:函数只能使用简单的sql语句,逻辑控制语句,复杂一点的存储过程是不能调用的,在函数里也不能使用execute  sp_executesql  或者execute .解决方法把函数改为存储过程,然后在另一个存储过程中象调用函数一样使用此存储过程就可以了. 下面是一个存储过程调用另一个存储过程的实例,有参数传递的. --存储过程sp_B    create 

oracle学习笔记之存储过程与存储函数

存储过程与存储函数说明:存储函数有返回值!存储过程没有返回值! 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 什么时候用存储过程/存储函数 原则:如果只有一个返回值,用存储函数:否则,就用存储过程. 1.创建存储过程 用CREATE PROCEDURE命令建立存储过程.语法如下: create [or replace] PROCEDURE 过程名[(参数列表)] AS     变量声明 PLSQL子程序体: 1)存储过程入门: create or replace proced

jdbc执行预处理,批处理,LOB字段处理,调用存储过程

(1)jdbc执行预处理 PreparedStatment预备语句 eg:String sql="insert into user(id,name,birthday,money) values(5,'administrator',?,'1000000')"; PreparedStatement stmt=conn.prepareStatment(sql); stmt.setTimestamp(1,new Timestamp(System.currentTimeMillis())); s

Mybatis学习总结(七)——调用存储过程

一.返回select结果集 1.创建存储过程 DELIMITER // DROP PROCEDURE IF EXISTS proc_queryUser; CREATE PROCEDURE proc_queryUser( IN user_name VARCHAR(50) CHARACTER SET utf8 ) BEGIN SET @exeSql = CONCAT('SELECT id,username,sex,birthday,address ', 'from t_user where user

EF和LINQ 调用存储过程

好久没有更新文章了,最近项目比较忙都没什么时间来分享最近的问题. 今天遇到一个超级傻逼的问题.C#中调用存储过程,自己code也10来年了,这应该是很简单的问题了.今天有2个新的api,一个只有1个参数, 一个有10多个参数,先前没有注意到对象类型, 以为是EF的DbContext,结果后来才发现是LINQ的DataContext对象.以前调用存储过程都是靠设计界面封装成方法. 现在designer界面有500多张表, 几年没有维护了,大家要修改什么东东都是直接改代码.所以这里以后台代码调用存储

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

存储过程 <3> 和函数的区别

二.函数和存储过程的优点: 1.共同使用的代码可以只需要被编写一次,而被需要该代码的任何应用程序调用(.net,c++,java,也可以使DLL库). 2.这种几种编写.几种维护更新.大家共享的方法,简化了应用程序的开发维护,提高了效率和性能. 3.这种模块化的方法使得一个复杂的问题.大的程序逐步简化成几个简单的.小的程序部分,进行分别编写,因此程序的结构更加清晰,简单,也容易实现. 4.可以在各个开发者之间提供处理数据.控制流程.提示信息等方面的一致性. 5.节省内存空间.它们以一种压缩的形式

java调用Oracle中的存储过程与存储函数

1 //调用存储过程 2 public static void testPro(){ 3 String driver = "oracle.jdbc.OracleDriver"; 4 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 5 Connection conn = null; 6 CallableStatement cs = null; 7 8 try { 9 Class.forName(driver)