我在Oracle Database 11g Enterprise Edition 11.2.0.4.0-64位生产、PL/SQL 11.2.0.4.0-生产、CORE 11.2.0.4.0生产、TNS for Linux 11.2.0.4.0-生产、NLSRTL 11.2.0.4.0-生产中运行此查询
CREATE OR REPLACE FORCE VIEW "IOT"."V_USERS_AND_RIGHTS" ("USER_PRIMARY_UNIT", "LOGIN", "FIRST_NAME", "LAST_NAME", "UNIT_ROLE") AS
SELECT "USER_PRIMARY_UNIT","LOGIN","FIRST_NAME","LAST_NAME","UNIT_ROLE"
FROM (
SELECT user_primary_unit,login, first_name, last_name,
LTRIM(MAX(SYS_CONNECT_BY_PATH(rights,' / '))
KEEP (DENSE_RANK LAST ORDER BY curr),' / ') AS UNIT_ROLE
FROM
(SELECT login,
first_name,
last_name,
user_primary_unit,
rights,
ROW_NUMBER() OVER (PARTITION BY login ORDER BY rights) AS curr,
ROW_NUMBER() OVER (PARTITION BY login ORDER BY rights) -1 AS prev
FROM (select member0_.login, member0_.first_name first_name, unit2.unit_name user_primary_unit, member0_.last_name last_name,
CONCAT(CONCAT(unit.unit_name, ' - '), role3_.role_name) rights
from
IOT_DEVICES.t_member member0_
inner join IOT_DEVICES.t_user member0_1_ on member0_.member_id=member0_1_.user_id
inner join IOT_DEVICES.t_playable_role playedrole1_ on member0_.member_id=playedrole1_.user_id
inner join IOT_DEVICES.t_unit_role unitrole2_ on playedrole1_.unit_role_id=unitrole2_.unit_role_id
inner join IOT_DEVICES.t_role role3_ on unitrole2_.role_id=role3_.role_id
inner join IOT_DEVICES.t_unit unit on unitrole2_.unit_id=unit.unit_id
inner join IOT_DEVICES.t_unit unit2 on unit2.unit_id=member0_1_.primary_unit_id
where current_date between playedrole1_.start_date and playedrole1_.end_date
order by unit.unit_name
))
GROUP BY login, first_name, last_name, user_primary_unit
CONNECT BY prev = PRIOR curr AND login = PRIOR login
START WITH curr = 1
)
ORDER BY user_PRIMARY_UNIT, FIRST_NAME, LAST_NAME;
但我有一个错误:
ORA-01489: result of string concatenation is too long
01489. 00000 - "result of string concatenation is too long"
*Cause: String concatenation result is more than the maximum size.
*Action: Make sure that the result is less than the maximum size.
即使我设置了所有这些变量:
SET LONG 2000000
SET pagesize 50000
set longchunk 1000
set linesize 1000
该错误与sqlplus设置无关,而是与Oracle DB中SQL引擎中的varchar2大小限制有关。对于11g,限制为4000字节。
处理查询时,其中一个串联会导致字符串长度超过限制。
乍一看
... LTRIM(MAX(SYS_CONNECT_BY_PATH(rights,' / ')) ...
和
... CONCAT(CONCAT(unit.unit_name, ' - '), role3_.role_name) rights ...
可能会导致这个问题。要么你对一个单位有很多权利,要么你有很深的层次结构。
我想在此环境中使用STRAGG函数:Oracle Database 11g Enterprise Edition 11.2.0.4.0版-64位生产,PL/SQL 11.2.0.4.0版-生产,CORE 11.2.0.4.0生产,TNS for Linux:11.2.0.4.0版-生产,NLSRTL 11.2.0.4.0版-生产: 我有一个名为V\u USER\u ROLE\u DESC的视图 执
问题内容: 我正在使用Oracle SQL开发人员版本3.0.04。我试图使用该功能将数据分组在一起。 但是,我不断收到错误消息, 我很确定输出可能会超过4000,因为这里提到的WEB_LINK是url stem和url query的串联值。 有没有解决的办法,或者还有其他选择吗? 问题答案: 由于聚合字符串的长度可以超过4000个字节,因此不能使用该函数。您可能会创建一个用户定义的集合函数,该函
问题内容: 我正在尝试通过运行以下sql创建表视图 但我得到以下 ORA-01489:字符串连接的结果太长01489。00000-“字符串连接的结果太长” 原因:字符串连接的结果大于最大大小。操作:确保结果小于最大大小。 我抬起头,发现了使用to_clob的建议,但仍引发此错误。我正在使用oracle 11g。我在这里先向您的帮助表示感谢。 问题答案: LISTAGG中最长的串联字符串可以是400
该软件官网已不存在 cacti中文企业版 本系统采用liunx与cacti集成,安装配置简单。 使用方法: root密码:CactiEZ cacti登录密码:admin 第一次登录强制更改密码 集成了我们最常用的插件,省去了我们自行安装的麻烦。 登录以后点击:用户管理——admin------区域------所有打钩特别说明: 此版本为目前网上最稳定版本,简单易用,插件非常的全!足以应付我们日常的
出于隐私或法律原因而不能将代码托管到第三方平台的企业,可能希望在企业内部架设专有的GitHub服务,能做到么?答案就是GitHub企业版(GitHub Enterprise)。 网址:https://enterprise.github.com/。 GitHub企业版搭建在企业本地网络中,因此企业拥有对版本库和项目完整的控制权限。GitHub企业版包含了GitHub上所有的好东西:提交历史、代码浏览
一、简介 黄页企业所使用模版的添加、修改、及管理。 二、添加黄页企业模版 企业模版的位置是: phpcms\templates\default\yp\com_default(com_default:为企业模版名称) 二、企业模版管理 三、企业模版的权限设置