相关文章推荐
阳刚的荔枝  ·  java break outside ...·  1 年前    · 
体贴的炒面  ·  C# ...·  1 年前    · 
SQL> create or replace procedure emp_dept
2     (pi_deptno    IN       emp.deptno%TYPE,
3      po_result    OUT      SYS_REFCURSOR)
4  IS
5  begin
6     OPEN po_result FOR
7        SELECT * FROM emp WHERE deptno=pi_deptno;
8  end ;
过程已创建。
SQL> var r_cur refcursor
SQL> exec emp_dept(10,:r_cur);
PL/SQL 过程已成功完成。
SQL> print :r_cur
EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
DEPTNO
----------
7782 CLARK      MANAGER         7839 09-6月 -81           2450
7839 KING       PRESIDENT            17-11月-81           5000
7934 MILLER     CLERK           7782 23-1月 -82           1300
pl/sql developer里调试,单独查看游标结果集。
SQL> CREATE OR REPLACE FUNCTION func_emp_dept
2        (pi_deptno    IN      emp.deptno%TYPE)
3  RETURN SYS_REFCURSOR
4  IS
5     po_result   SYS_REFCURSOR;
6  BEGIN
7     OPEN po_result FOR
8        SELECT * FROM emp WHERE deptno=pi_deptno;
9     RETURN po_result;
10  END;
11  /
函数已创建。
SQL> select func_emp_dept(10) from dual;
FUNC_EMP_DEPT(10)
--------------------
CURSOR STATEMENT : 1
CURSOR STATEMENT : 1
EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
DEPTNO
----------
7782 CLARK      MANAGER         7839 09-6月 -81           2450
7839 KING       PRESIDENT            17-11月-81           5000
7934 MILLER     CLERK           7782 23-1月 -82           1300 对了,我把函数改成这样会报错:
create or replace function func_emp_dept(v_deptno IN emp.deptno%TYPE)
return cursor IS
c_cursor cursor;
BEGIN
OPEN c_cursor FOR
SELECT * FROM emp WHERE deptno = v_deptno;
RETURN c_cursor;
说必须申明表标CURSOR,这怎么理解? Pg SQL 自7.3起支持SRF( Set Returning Func. 集合 返回 函数 ) 配合有一些新的 函数 权限选项,使 schema 的设置更灵活性。SRF 除了手册里提到的内置 函数 generate_series generate_subscript 外,自定义 函数 也可 返回 集合。 下面示例摘译自 Pg SQL wiki : PL /Pg SQL 如何 返回 多行 结果我们从处理简单表单... 嗨 - 我正在尝试让我的 函数 返回 select语句中的所有(8) 。根据我在SO上发现的内容尝试了几个变体,但只能让它 返回 单个 而不是全部8.新的 PL / SQL 和第一个发布的SO - 我在MS SQL 中有相同的运行但是完全不同在 PL / SQL 中。任何帮助表示赞赏###尝试1 - 仅 返回 第一个 create or re pl ace FUNCTION "SP_SETGRIPSTAGE" (gripN... 在 PLSQL 中可以自定义 函数 比如在游标中的B2C布尔 函数 有效的让我们认识到了三种参数的使用。--可以是基本 数据 类型、 PLSQL 数据 类型(行类型,引用类型)、游标 、table类型。在 PLSQL 函数 通常与存储过程共同作用,以减少重复工作耗费的精力和时间。除了第一阶段在Oracle里学到的数 函数 、日期 函数 、字符 函数 外。 函数 在数学中通常是指可以一对一,多对一,但是不能一对多的表达式。在 PLSQL 函数 作为一个具有 返回 和可接受参数的程序体。 函数 本身分为单行 函数 和组 函数 。--实例:编写一个 函数 。..... 上一次介绍了动态 SQL 返回 一行结果的语法结构。 本次解说用动态 SQL 返回 复数行的语法结构。 首先动态 SQL 如果 返回 多行 的时候,是不能用EXECUTE IMMEDIATE的,会发生异常。 相反,通过使用光标变量,可以实现动态 SQL 。 那么,在复习的意义上,确认通常嵌入的 SQL 方法,而不是动态 SQL ,然后说明动态 SQL 的情况。 首先,使用显式光标可在普通嵌入的 SQL 返回 多行 。 (关于明示光标,在第7回~第11回中进行说明) 请看以下情况1的例子。 <外壳1嵌入的 SQL 显式光标处理> 一、什么是 函数 函数 是最基本的一种代码抽象的方式,是组织好的可重复使用的用来实现单一或相关联功能的代码段。 函数 是对做相似的事情或相似的动作进行封装,它能提高应用的模块性和代码的重复利用率。我们要封装好一个 函数 ,首先要学会对事务进行抽象,抽象是数学中非常常见的概念。举个例子:计算阶乘,比如:1 *2 * 3 * ... * 10,写起来十分不方便,我们为了简便可以写成10!。再如求和公式 等同于1 ... 数据 库的使用中,Count() 函数 用于统计 数据 表的记录, 返回 匹配指定条件的行数。 三种Count() 函数 count(1)、count(*)、count(列名) 区别 1、 count(1)、count(*) 数据 表的 数据 量很大时,对 数据 表作分析,使用 count(1) 比使用 count(*) 用时多。从执行计划看, count(1)、count(*)的效果是相同的,但实际 count(1)的执行用时相对较少(1w以内 数据 量)。如果count(1)是聚索引,id,那肯定是count(1)快,但是 while循环表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1else:语句块2#如果说年利率是6.7%,本利是每年翻滚,则多少年后本钱会翻倍#in[1]benqian=100000year=0#存钱需要翻本的年数while benqian<200000:be... 3、有条件地查询 数据 ,列、运算符、 间无空格,非数 需要加上单引号,空 null使用(WHERE 列名 IS NULL)或(WHERE列名 IS NOT NULL) SEL...