1. --函数的创建
  2. create function func1(dno number)
  3. return NUMBER--必须带有返回值
  4. is
  5. v_max number;--定义返回值
  6. begin
  7. select max(sal) into v_max--赋值
  8. from emp where deptno= dno;
  9. RETURN v_max;--返回
  10. end;
  11. --函数的调用,只能是表达式的一部分,不能单独调用
  12. select * from emp where sal= func1(10);
  13. -------------------------------------------------------------------------------
  14. --创建过程存在则替换,带输出参数
  15. create or replace procedure proc1(dno in number,maxsal out number)----------参数不能有(10)这样的长度控制
  16. is
  17. v_maxsal number;
  18. begin
  19. select max(sal) into v_maxsal
  20. from emp where deptno= dno;
  21. maxsal := v_maxsal;--给输出参数赋值
  22. dbms_output.put_line(v_maxsal);--打印
  23. end;
  24.  
  25. --调用过程
  26. declare maxsal number;
  27. begin
  28. proc1(10,maxsal);
  29. dbms_output.put_line(maxsal);
  30. end;
  31. --------------------------------------------------------------------------------
  32. /*
  33. 创建返回多行的存储过程
  34. */
  35. create or REPLACE procedure proc_test
  36. is
  37. begin
  38. DECLARE cursor cc is SELECT * from emp;--这里定义一个游标集合变量cc
  39. begin
  40.  
  41. for r in cc loop--对游标cc进行遍历
  42. dbms_output.put_line(r.ename || ':' || r.sal);
  43. end loop;--结束遍历
  44. end;
  45. end;
  46. ---调用
  47. begin
  48. proc_test();
  49. end;

  1.函数必须是和语句一起执行,不能被单独执行,必须有返回值。

2存储过程 可以被单独执行,没有返回值。

下面是在PL/SQL中使用动态sql语句:

  1. -------Oracle DML:insert,delete,update
  2. -------TCL:COMMIT,ROLLBACK,SAVEPOINT ONT,ROLLBACK TO ONE;
  3. -------DQL:SELECT
  4. --PL/SQL 中使用本地动态sql
  5. DECLARE
  6. str VARCHAR2(200);
  7. outid number;
  8. begin
  9. --values(:1,:2)占位符,returning id into :3id赋值给第三个参数
  10. str :='insert into test123 values(:1,:2) returning id into :3';
  11. execute immediate str --运行动态sql
  12. using 1,'php'--给占位符赋值 1 2
  13. RETURNING into outid;--3
  14. dbms_output.put_line(outid);
  15. end;

  

Oracle procedure存储过程/function函数的更多相关文章

  1. java下实现调用oracle的存储过程和函数

    在Oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR() PRIMARY KE ...

  2. Java代码调用Oracle的存储过程,存储函数和包

    Java代码调用存储过程和存储函数要使用CallableStatement接口 查看API文档: 上代码: java代码调用如下的存储过程和函数: 查询某个员工的姓名  月薪 职位 create or ...

  3. [转]Oracle中存储过程和函数的区别

    原文地址:http://blog.csdn.net/tender001/article/details/8066203 存储过程和函数: 例子: //创建过程 create or replace pr ...

  4. Oracle数据库—— 存储过程与函数的创建

    一.涉及内容 1.掌握存储过程与函数的概念. 2.能够熟练创建和调用存储过程与函数. 二.具体操作 1.创建存储过程,根据职工编号删除scott.emp表中的相关记录. (1)以scott 用户连接数 ...

  5. Oracle 在存储过程或函数中执行字符串sql

    有时,我们需要在存储过程或函数中根据条件拼凑一些sql字符串语句,然后再执行拼凑后的sql字符串,如何做到呢? 参考以下代码: FUNCTION CALCULATE_TARGET_SCORE (CUR ...

  6. oracle procedure存储过程

    1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS 变量1 ; 变量2 DATE: BEG ...

  7. 【学习】java下实现调用oracle的存储过程和函数

    在oracle下创建一个test的账户,然后按一下步骤执行: 1.创建表:STOCK_PRICES --创建表格CREATETABLE STOCK_PRICES( RIC VARCHAR(6) PRI ...

  8. oracle调用存储过程和函数返回结果集

    在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...

  9. oracle的存储过程和函数(PL/SQL)

    czmmiao 存储过程概述 存储过程是子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库.是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出.一个存储过程通 ...

随机推荐

  1. js判断字符在另一个字符串中出现次数

    经过搜索验证,提供两个方法. 1. 通过分割获取长度原理 var s = 'www.51qdq.com';var n = (s.split('.')).length-1;alert(n);  //弹出 ...

  2. 不同linux系统添加开机启动程序的命令

    see http://phpcj.org/blog/%E4%B8%8D%E5%90%8Clinux%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%BC%80%E6%9C ...

  3. WIndows 7 与 Debian 7 双系统启动引导

    以前写有一篇文章是Windows XP下引导Linux的(http://www.cnblogs.com/ibgo/archive/2012/05/20/2510736.html),采用的是grub4d ...

  4. PHP免费API调用,使用(CURL)

    <?phpclass GetApiModel{//获取第三方API //获取身份证信息 //返回json /*{ "errNum": 0, "retMsg" ...

  5. oracle数据库创建用户,并且给用户授权

    参考文档: http://www.blogjava.net/wolfman09/archive/2009/05/01/268536.html 一:创建用户 create user username i ...

  6. mysql命令行方式添加用户及设置权限

    以前总是喜欢通过phpmyadmin去添加用户和数据库,这次装完系统后,配置了一大堆东东,实在不想安装phpmyadmin了,就通过命令行方式创建了数据库和设置权限,记录一下,免得以后总是百度 关键步 ...

  7. 我的第二篇--nginx安装问题之路径问题

    这几天还是一直在搭建nginx,并且要在nginx的基础之上配置naxsi(WAF防火墙)并使它生效,但是随之而来的问题也会有很多,也许因为我是个新手,所以遇到的问题要多,不解的问题也要很多,不知道又 ...

  8. setTimeout和setImmediate以及process.nextTick的区别

    在javascript中我们了解到了setTimeout和setInterVal函数事件队列(任务队列)的相关知识,除了setTimeout和setInterval这两个方法外,Node.js还提供了 ...

  9. nodejs设置NODE_ENV环境变量

    看下app.js文件中的一部分代码,如下: //开发环境错误处理 // will print stacktrace if (app.get('env') === 'development') { ap ...

  10. Xilinx 网站资源导读2

    Xilinx 网站资源导读 ———版权声明———–本文作者 Ricky Suwww.fpganotes.comrickysu.fpga@gmail.com 欢迎转载,转载请保持原样及署名商业使用须得到 ...