当前位置: 代码迷 >> Oracle管理 >> Oracle 表函数,该如何解决
  详细解决方案

Oracle 表函数,该如何解决

热度:27   发布时间:2016-04-24 05:21:59.0
Oracle 表函数
请教下Oracle 表函数的写法,
在baidu里搜索半天没找到。

表函数
想实现如下功能:
传递一个字符串:
假设传递‘aw298fdf',
函数返回表的内容(字符串拆分多列):
顺便说明些创建表 函数语法,非常感谢!
a
w
2
9
8
f
d
f

------解决方案--------------------
SQL code
CREATE OR REPLACE TYPE "T_VC" is table of varchar2(100);/create or replace function f_test(i_str varchar2)return t_vcasv_str_table t_vc;begin v_str_table := t_vc();  for i in 1..length(i_str) loop    v_str_table.extend;    v_str_table(i):=substr(i_str,i,1);  end loop;  return v_str_table;end;/SQL> select * from table(f_test('aw298fdf')); COLUMN_VALUE--------------------------------------------aw298fdf 8 rows selected
------解决方案--------------------
SQL code
CREATE OR REPLACE TYPE "T_VC" is table of varchar2(100);  --定义一个数组类型/create or replace function f_test(i_str varchar2)return t_vc  --定义返回数组类型的函数asv_str_table t_vc;  --定义一个数组类型变量begin v_str_table := t_vc();  --初始构造,数组大小为0  for i in 1..length(i_str) loop  --循环参数i_str里的每个字符    v_str_table.extend;   --增加数组大小加1    v_str_table(i):=substr(i_str,i,1);  --一个个字符截取,保存到数组里  end loop;  return v_str_table;  --返回数组end;/SQL> select * from table(f_test('aw298fdf'));   --用table函数展示数组结果 COLUMN_VALUE--------------------------------------------aw298fdf 8 rows selected
------解决方案--------------------
很不容易,给点分吧
------解决方案--------------------
实测成功,但“表函数”是什么意思呢?不太理解。
SQL code
CREATE OR REPLACE TYPE StringArray IS TABLE OF VARCHAR2(20);
------解决方案--------------------
探讨

很不容易,给点分吧

------解决方案--------------------
SELECT substr(a, LEVEL, 1) t 
FROM (SELECT '中国人' a FROM dual)
CONNECT BY level <= length(a)



中 
国 
人 

我喜欢用这个拆分
  相关解决方案