ORACLE 表函数
从oracle 9i 开始,提供了一个叫做“管道化表函数”的概念,可以利用管道化来返回表函数。
但这种类型的函数,必须返回一个集合类型,且标明 pipelined以及不能返回具体变量,而是以一个空 return 返回!
这个函数中,通过 pipe row () 语句来送出要返回的表中的每一行
在调用这个函数的时候,通过 table() 关键字把管道流仿真为一个数据集!
见下面示例:
1、建立一个三列的对象:
create or replace type rowType_CustOrd_Line is object(order_no varchar2(12),line_no varchar2(4),rel_no varchar2(4));
2、建立table对象
create or replace type tabType_CustOrd_Line is table of rowType_CustOrd_Line;
3、建立包头:
CREATE OR REPLACE PACKAGE Dj_Test_API IS
module_ CONSTANT VARCHAR2(25) := 'FNDBAS';
lu_name_ CONSTANT VARCHAR2(25) := 'DjTest';
Function Get_Customer_Order_Line(
order_no_ IN VARCHAR2
)
return tabType_CustOrd_Line pipelined;
END Dj_Test_API;
/
4、建立包体:
CREATE OR REPLACE PACKAGE BODY Dj_Test_API IS
Function Get_Customer_Order_Line(
order_no_ IN VARCHAR2
)
return tabType_CustOrd_Line pipelined as row_ rowType_CustOrd_Line;
begin
for custOrdRow in (select t.order_no, t.line_no,t.rel_no
from customer_order_line t
where t.order_no=order_no_) loop
row_ := rowType_CustOrd_Line(custOrdRow.order_no, custOrdRow.line_no,custOrdRow.rel_no);
pipe row (row_);
end loop;
return;
END Get_Customer_Order_Line;
------------------------------------------------------------------------
END Dj_Test_API;
/
5、利用 table() 关键字把管道流仿真为一个数据集:
select * from table(Dj_Test_API.Get_Customer_Order_Line('M200800177'
相关文档:
--在应用程序中往往有些固定的数据库操作,我们常常为致谢固定的操作定义了一些存储过程。这些存储过程不仅
--可以简化客户端的应用程序的开发和维护。而且还可以提高应用的运行性能。
-- 创建存储过程的语法。
create [or replace] procedure <过程名>[(参数)]
is|as
[局部变量声明]
begin
......
--创建触发器(行级触发器)
create or replace trigger tri_update_emp_bak
after update
on emp_bak
for each row --每更新一行 就触发一次
begin
--oracle 里面 对触发器 也提供了特殊的对象 :NEW :OLD 来访问 更新前后的数据
dbms_output.put_line('更新后' || :NEW.sal);
dbms_outpu ......
Exam : Oracle 1Z0-051
Title : Oracle Database: SQL Fundamentals I
1. View the Exhibit to examine the description for the SALES table.
Which views can have all DML operations performed on it? (Choose all that apply.)
A. CREATE VIEW v3
AS SELECT * from SALES
WHERE cust_id = 2034
WITH CHECK OPTI ......
情况描述:安装时选择的自动安装,由于时间久远忘记用户名、密码了,导致现在试了几个默认的用户名密码后,都提示无效的用户名、密码。
解决方法:启动SQLPLUS,提示输入用户名,然后输入sqlplus/as sysdba,密码为空。提示连接到信息,连接成功!
执行alter user sys identified by 密码;
设置成功!
现在可以从Enterp ......
1. ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2. CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- ......