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...