- 浏览: 1741898 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (520)
- Oracle (10)
- Oracle错误集 (8)
- Oracle安装升级 (15)
- Oracle日常管理 (51)
- Oracle字符集 (7)
- Oracle备份恢复 (24)
- Oracle优化 (4)
- Oracle编程 (52)
- Oracle导入导出 (19)
- Oracle体系结构 (15)
- Oracle网络 (2)
- Oracle安全 (2)
- Oracle权限 (3)
- Oracle数据字典和性能视图 (2)
- Oracle常用地址 (5)
- SQLPLUS专栏 (7)
- SqlServer (13)
- SqlServer2005编程 (27)
- SqlServer2005管理 (15)
- MySQL (20)
- Dorado应用 (1)
- C# (24)
- Arcgis Server开发 (20)
- ArcSDE技术 (19)
- UML学习 (2)
- 设计模式 (2)
- JAVA EE (4)
- JavaScript (3)
- OFBIZ (27)
- JAVA WEB开发 (22)
- Linux&Unix (34)
- SHELL编程 (14)
- C语言 (11)
- 网络协议 (14)
- FREEMARKER (2)
- GROOVY (2)
- JAVA语言 (3)
- 防火墙 (0)
- PHP (2)
- Apache (2)
- Loader Runner (1)
- Nginx (3)
- 数据库理论 (2)
- maven (1)
最新评论
-
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
怼怼怼怼:
oracle的timestamp类型使用 -
pg_guo:
感谢
oracle中查看用户权限 -
xu234234:
5、MapResourceManager控件中添加了两个服务, ...
北京ArcGis Server应用基础培训笔记1
构建测试表:
create table TABLE1 ( ID INTEGER, NAME VARCHAR2(10) ) create table TABLE2 ( ID INTEGER, ROLE VARCHAR2(10) ) insert into TABLE1 (ID, NAME) values (1, '张三'); insert into TABLE1 (ID, NAME) values (2, '李四'); commit; insert into TABLE2 (ID, ROLE) values (1, '查询'); insert into TABLE2 (ID, ROLE) values (1, '分析'); insert into TABLE2 (ID, ROLE) values (1, '决策'); insert into TABLE2 (ID, ROLE) values (2, '查询'); commit;
要求输出结果:
ID NAME ROLE 1 张三 查询,分析,决策 2 李四 查询
方法一、使用wmsys.wm_concat
select table1.*,wmsys.wm_concat(role) from table1,table2 where table1.id=table2.id group by table1.id,table1.name
方法二、使用sys_connect_by_path
select id, name, ltrim(max(sys_connect_by_path(role, ',')), ',') from (select row_number() over(partition by table1.id order by name) rn,table1.*, role from table1, table2 where table1.id = table2.id) start with rn = 1 connect by prior rn = rn - 1 and prior id = id group by id, name order by id
方法三、使用自定义函数
create or replace function my_concat(mid in integer) return varchar2 --记住:参数和返回值里的数据类型都不用定义长度 is result varchar2(4000); --定义变量,记住Oracle中定义变量不需要 begin for temp_cursor in (select role from table2 where id=mid) loop --此处在游标FOR循环中使用查询 result :=result || temp_cursor.role || ','; --Oracle中字符连接使用||,而sql server中用+ end loop; result := rtrim(result,','); --去掉最后一个空格,还有Oracle中的赋值前面没有set return result; end; select table1.*,my_concat(table1.id) from table1,table2 where table1.id=table2.id group by table1.id,table1.name order by table1.id
发表评论
-
To_Date函数用法
2014-11-07 11:04 1690spl> select * from emp ... -
Oracle中的MD5加密
2014-02-15 10:18 1416一、技术点 1、 DBMS_OBFUSCATION_TO ... -
oracle行列转换总结
2014-02-15 10:18 975最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换 ... -
Oracle数据库中的''与NULL的关系
2014-02-15 10:17 1290在Oracle数据库中''与NULL是等价的。均表示空值, ... -
快速删除重复的记录
2014-02-15 10:17 590做项目的时候,一位同事导数据的时候,不小心把一个表中的数据 ... -
Oracle的rownum原理和使用
2014-02-15 10:17 1073Oracle的rownum原理和使用 在Oracle中, ... -
ORACLE中查询某个字段包含回车换行符
2013-04-11 15:42 11093很简单,但是很多人一下估计还不一定知道。 select * ... -
ORACLE触发器(转)
2013-03-06 23:58 1103本篇主要内容如下: ... -
使用forall语句的bulk dml操作
2008-11-13 17:27 3758在oracle 8i或更高版本的forall语句中,oracl ... -
判断俩个值的大小函数sign
2008-11-10 11:13 2904比较大小select decode(sign(变量1-变量2) ... -
Oracle 触发器应用
2008-11-06 15:37 2168触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程, ... -
PLSQL学习笔记
2008-10-23 16:58 2262在网上看到的一个比较好的PLSQL学习笔记,放在这里方便以后查 ... -
Oracle自定义函数实例
2008-10-22 16:35 20042--没有参数的函数 create or replace fun ... -
Oracle自定义类型使用一例
2008-10-22 16:28 4245一、创建自定义类型 create type t_air as ... -
Oracle存储过程实例
2008-10-22 15:30 3494/*不带任何参数存储过程*/ create or replac ... -
Oracle的异常处理
2008-10-22 14:40 2989oracle提供了预定义例外 ... -
识别低效的语句
2008-10-15 09:04 1439SELECT EXECUTIONS , DISK_READS, ... -
PL/SQL Developer使用技巧
2008-10-07 15:18 66881、PL/SQL Developer记住登陆密码 在使用 ... -
Oracle 绑定变量
2008-10-06 10:53 4335在oracle 中,对于一个提交的sql语句,存在两种可选的解 ... -
使用 WMSYS.WM_CONCAT 进行列转换
2008-09-10 14:13 2069select t.rank, t.Name from t_me ...
相关推荐
ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案
重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件
功能强大的wmsys.wm_concat详细示例。
解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...
大家用oracle数据库里面的wmsys.wm_concat函数有没有遇见过字符串缓冲区太小的情况? 针对这种情况我写了个自定义聚合函数 是clob版的。
Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....
没有WMSYS.WM_CONCAT方法 需要的文件 owmctab.plb owmaggrs.plb owmaggrb.plb 拷贝三个文件到 $ORACLE_HOME\RDBMS\ADMIN\ 目录下 打开命令行 sqlpus , 用sys 登陆 执行命令 @$ORACLE_HOME\RDBMS\ADMIN\owmctab.plb...
wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/
解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。
wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法/wmsys_wm_concat的几个用法
行转列函数,对于学习sql查询的朋友们,可能会遇到这样的要求,此文档中做了详细记载,希望可以帮到你!
ORA-06512 数字或值错误,字符缓冲区太小的解决方法。 有图有真相,希望对你有帮助。
很多场合我们都会用到...sys_connect_by_path(字段名, 2个字段之间的连接符号),这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下,方法如下 REPLACE(字段名,原字符,’,’)。这个
解决方案:使用Oracle自带的函数 WMSYS.WM_CONCAT,进行拼接。 函数限制:它的输出不能超过4000个字节。 为了不让SQL出错,又可以满足业务的需求,超过4000个字节的部分,使用“。。。” 实现SQL如下: 代码如下: ...
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...
-- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...