ORA-01436: CONNECT loop in the user data
HelloI have a simple bit of SQL out details on HR supervisor strings in Oracle EBS:
SELECT LPAD(' ', (LEVEL - 1) * 10, ' ') || person_id level_label
, LEVEL
, description
FROM applsys.fnd_user u
, hr.per_all_assignments_f h
WHERE u.employee_id = h.person_id
START WITH SYSDATE BETWEEN effective_start_date AND effective_end_date
AND person_id = :personid
CONNECT BY PRIOR person_id = supervisor_id
AND SYSDATE BETWEEN effective_start_date AND effective_end_date
It will return data normally without problems - e.g. data dummy below - looks very good. The names and made up person_ids.LEVEL_LABEL LEVEL DESCRIPTION
000001 1 Person Person 1
000002 2 Harry Marry
000003 3 John Smith
000004 4 Jenna Jones
000005 4 Her Name
000006 4 His Name
000007 4 Joseph Coat
000008 4 Les Miserables
000009 3 Mister Smith
000010 3 Miss Jones
000011 3 Andrew And
000012 4 Claire So
000013 4 Hilary Hi
000014 2 Jenny Jones
000015 3 Amanda Mandy
000016 4 James Jim
000017 4 William Wonder
000018 4 Crazy Cat
000019 4 Silly Cat
000020 4 Tall Hill
000021 4 Amazing Grace
000022 3 Lovely Mountain
000023 4 Joyous Spring
000024 4 Anonymous Name
000025 4 Brian Binky
However, if I try for an another person_id, for which a user receives an error in one part of the Oracle EBS, I get this error:ORA-01436: CONNECT loop in the user data
I'm guessing there is a loop of supervisor happening somewhere, but I don't know how to determine where it might happen.
I was wondering if there is any way I can change the SQL code to be able to work out where the loop can be, as there are about 50 people involved in Ministry to this user and I have been through all their records and can not see a loop to look through the Oracle HR screens.
I know it's a 'big ask' to ask a vague question about some oracle SQL, so apologies for that.
Any advice much appreciated.
Thank you
Hello
To see loops, do something like this:
SELECT SYS_CONNECT_BY_PATH (person_id, '/') AS path
FROM applsys.fnd_user u
, hr.per_all_assignments_f h
WHERE u.employee_id = h.person_id
AND CONNECT_BY_ISCYCLE = 1
CONNECT BY NOCYCLE PRIOR person_id = supervisor_id
AND SYSDATE BETWEEN effective_start_date
AND effective_end_date
;
If you would care to post CREATE TABLE and instructions INSERT for some samples, so I could test it.
Note there is no START WITH clause.
If, for example, Jones is the architect of Scott, Scott is the main contractor of Adams and Adams is the architect of Jones (much to other lines is not involved in a loop), then displays 3 rows of output, such as
PATH
---------------------
Jones/Scott/Adams
Scott/Adams/Jones
Adams/Jones/Scott
Moreover, all the same CONNECT BY queries on these tables can be a lot faster if you've made the join and date filtering in a separate subquery first:
WITH combined_data AS
(
SELECT person_id, supervisor_id
FROM applsys.fnd_user u
, hr.per_all_assignments_f h
WHERE u.employee_id = h.person_id
AND SYSDATE BETWEEN effective_start_date
AND effective_end_date
)
SELECT SYS_CONNECT_BY_PATH (person_id, '/') AS path
FROM combined_data
WHERE CONNECT_BY_ISCYCLE = 1
CONNECT BY NOCYCLE PRIOR person_id = supervisor_id
;
Tags: Database
Similar Questions
-
ORA-01436: CONNECT loop in the user data when the delimited string splitting by the
I'm trying to split a string into records. The values are three characters more '-' with a limit of 12 values. The values themselves are a combination of two data, the first being two characters, a.
The following example translates: ORA-01436: CONNECT BY a loop in the user data
WITH Data(Code, Datum) AS ( SELECT 'VGCU3VM', '00V-YYG-BVC-PIU-DV3-EVV-TVM-' FROM Dual UNION ALL SELECT 'VGAU3VM', '00V-YYG-BVA-PIU-DV3-EVV-TVM-' FROM Dual UNION ALL SELECT 'VGLN3CM', '00V-YYG-BVL-PIN-DV3-EVC-TVM-' FROM Dual UNION ALL SELECT 'VGLT3PM', '00V-YYG-BVL-PIT-DV3-EVP-TVM-' FROM Dual UNION ALL SELECT 'VGAT3RA', '00V-YYG-BVA-PIT-DV3-EVR-TVA-' FROM Dual ) SELECT Datum, LEVEL, SUBSTR(Datum, ((LEVEL - 1) * 4) + 1, 2), SUBSTR(Datum, ((LEVEL - 1) * 4) + 3, 1) FROM Data CONNECT BY Code = PRIOR Code AND LEVEL <= LENGTH(Datum) / 4;
Remove the 'Code = Code PREREQUISITE"clause, to avoid the error, but too many records are returned, because nothing is to limit the records in their own groups.
The following works:
WITH Data(Code, Datum) AS ( SELECT 'VGCU3VM', '00V-YYG-BVC-PIU-DV3-EVV-TVM-' FROM Dual UNION ALL SELECT 'VGAU3VM', '00V-YYG-BVA-PIU-DV3-EVV-TVM-' FROM Dual UNION ALL SELECT 'VGLN3CM', '00V-YYG-BVL-PIN-DV3-EVC-TVM-' FROM Dual UNION ALL SELECT 'VGLT3PM', '00V-YYG-BVL-PIT-DV3-EVP-TVM-' FROM Dual UNION ALL SELECT 'VGAT3RA', '00V-YYG-BVA-PIT-DV3-EVR-TVA-' FROM Dual ) SELECT Datum, SUBSTR(Datum, ((Some.Num - 1) * 4) + 1, 2) A, SUBSTR(Datum, ((Some.Num - 1) * 4) + 3, 1) B FROM Data, (SELECT LEVEL Num FROM Dual CONNECT BY LEVEL <= 12) Some WHERE SUBSTR(Datum, ((Some.Num - 1) * 4) + 1, 2) IS NOT NULL;
What causes ORA-01436?
Hello
Depending on your version, you can add another condition to your CONNECT BY clause.
It works in Oracle 11.2.0.3.0:
SELECT
Point of reference,
LEVEL,
SUBSTR (Datum, ((LEVEL-1) * 4) + 1, 2),
SUBSTR (Datum, ((LEVEL-1) * 4) + 3, 1)
Of
Data
CONNECT
Code = Code PRIOR
AND LEVEL<= length(datum)="">=>
AND PRIOR SYS_GUID () IS NOT NULL-* ADDED *.
;
Thanks for the display of the data of the sample; This is really useful!
In addition, relational databases are designed to have 1 piece of information in each column of each row, not a list delimited by up to 12 points. It is so basic to the design of database he called the first normal form. You're going to solve a lot of problems even before they occur if you paste to first normal form and change the table structure to resemble the result set of this query. (Maybe that's exactly why you're doing this query.)
-
Hello
When I run query below, it always throws the below error:
But when I use NOCLYCLE and CONNECT_BY_ISCYCLE to see which line is in question.SELECT connect_by_root code AS code_root, CODE, CODE_DESC, UP_CODE FROM DI_CODE_LEVEL WHERE TYPE_CODE='SP' CONNECT BY PRIOR CODE=UP_CODE; ORA-01436: CONNECT BY loop in user data 01436. 00000 - "CONNECT BY loop in user data"
It shows nothing, which means CONNECT_BY_ISCYCLE = ZERO for all rows.
Is there another reason that sql would lift ORA-01436?select * from ( SELECT connect_by_root code AS code_root, CODE, CODE_DESC, UP_CODE , CONNECT_BY_ISCYCLE AS ISCYCLE FROM DI_CODE_LEVEL WHERE TYPE_CODE='SP' CONNECT BY NOCYCLE PRIOR CODE=UP_CODE ) where ISCYCLE>0;
If there is a loop, then will the combination of NOCYCLE, CONNECT_BY_ISCYCLE will show?
Thank youHello
Apparently, one or more of the "SP" lines are at the origin of the problem.
The WHERE clause is applied after the CONNECT BY is finished, saying:select * from ( SELECT connect_by_root code AS code_root, CODE, CODE_DESC, UP_CODE , CONNECT_BY_ISCYCLE AS ISCYCLE FROM DI_CODE_LEVEL WHERE TYPE_CODE='SP' CONNECT BY NOCYCLE PRIOR CODE=UP_CODE ) where ISCYCLE>0;
is equivalent to
select * from ( SELECT connect_by_root code AS code_root, CODE, CODE_DESC, UP_CODE , CONNECT_BY_ISCYCLE AS ISCYCLE FROM DI_CODE_LEVEL CONNECT BY NOCYCLE PRIOR CODE=UP_CODE ) WHERE TYPE_CODE = 'SP' AND ISCYCLE > 0;
To see where the loop occurs, you must include the lines where type_code = "SP".
When you debug "ORA-01436: CONNECT IN a loop in the user data ', view SYS_CONNECT_BY_PATH (uk,...), where the United Kingdom is a unique key. That will tell you much more than just the root information. You might want this:
SELECT connect_by_root code AS code_root, CODE, CODE_DESC, UP_CODE , SYS_CONNECCT_BY_PATH (code, '/') AS path -- For debugging , CONNECT_BY_ISCYCLE AS ISCYCLE -- For debugging FROM DI_CODE_LEVEL -- WHERE TYPE_CODE = 'SP' -- Commented out for debugging where ISCYCLE > 0 -- For debugging CONNECT BY NOCYCLE PRIOR CODE = UP_CODE
I hope that answers your question.
If not, post a small example data (CREATE TABLE and only relevant columns, INSERT statements), and the results you want from this data.
Explain how you get these results from these data.
Always tell what version of Oracle you are using. -
ORA-01436 - connect loop in the user data - only in the database 10G...
Hello
I'm having a problem with a query. First of all I have to say that I choose this query on the internet and has adapted to my worries... so I understand very well the "connection of level" clause... that's why I need help to find out what is happening here...
The query is all ok in a 8i database, but if I took exactly the same query on a 10G database I got the error "ORA-01436 - connect with loop in user data.
This query returns one row for each day between 2 dates passed as parameters. The query takes 4 parameters: a date 'from', date 'for' and 2 other parameters indicating if we want that Saturdays and Sundays (end of week) in the result set.
This is the query:
Select days_between.days
de)
SELECT & date_from + ROWNUM-1 days
DE)
SELECT 1 nothing
OF THE DOUBLE
CONNECTION OF LEVEL < = (nvl(&date_to,&date_from) - & date_from + 1)
)
where & date_from + ROWNUM-1 < = nvl (date_to, & date_from)
) days_between
where (nvl (& exclude_saturdays, 'Y') = ' or replace (to_char (days_between.days, 'DAY'),' ') not in ('SATURDAY', 'SATURDAY'))
and (nvl (& exclude_sundays, 'Y') = ' or replace (to_char (days_between.days, 'DAY'),' ') not in ('SUNDAY', 'SUNDAY'))
For the parameter 'date_from' enter 'to_date('2009-01-01','yyyy-mm-dd')' as a break for the 'date_to' 'to_date('2009-01-07','yyyy-mm-dd')' as a value parameter value. For the other 2 parameters, use 'Y' to exclude this day or "N" to keep this day here in the result set.
So I said earlier, this query runs very well on a 8i database but not on a 10G a where I got the error "ORA01436 - connect with loop in user data.
I have search the Internet but I don't know why it runs on a 8i and not on a 10G... Can someone help me please?Hello
SELECT ROWNUM AS n FROM dual CONNECT BY LEVEL <= x;
is a quick and easy way to generate a table of meters containing all integers from 1 to x. You are the query, it has been changed, not for a list of consecutive integers, but a list of consecutive dates.
This technique only works in Oracle 9 (and more). You did a mistake when you said it works in Oracle 8 but not in Oracle 10? It is the opposite, when I try.
Here is another way to generate a table of counters:
SELECT ROWNUM AS n FROM all_objects WHERE ROWNUM <= x;
This method works in any version of Oracle, but it is slower than the method CONNECT BY and does not work for the great values on x. (this is probably good for x<= 5000,="" depending="" on="" your="">=>
If you can do this:
select days_between.days from ( SELECT &date_from + ROWNUM - 1 as days FROM all_objects WHERE ROWNUM <= (1 + NVL (&date_to, &date_from)) - &date_from ) days_between where ( nvl(&exclude_saturdays,'Y') = 'N' or replace(to_char(days_between.days,'DAY'),' ') not in ('SAMEDI','SATURDAY') ) and ( nvl(&exclude_sundays,'Y') = 'N' or replace(to_char(days_between.days,'DAY'),' ') not in ('DIMANCHE','SUNDAY') ) ;
in any version of Oracle.
-
Error: CONNECTION loop in the user data
CONNECT IN a loop in the user data:
Table X (sample data were actually lines 35K)
--------------
CODE CASE OLD_ID New_id PERSON AUTH
01 ab122 1234 0001 AU123 99393
07 vv353 7872 0919 FV982 78282
01 ab122 1982 9929 99393 AU123
04 hjsss 8839 8302 JK920 32320
01 ab122 0001 1982 AU123 99393
05 cg899 6728 32322 IKL020 65252
07 w353 0919 8282 FV982 78282
now I need to order these data comparing the values of the line to old_id new_id for each combination of code, person, case
need output like below
Table X
--------------
CODE CASE OLD_ID New_id PERSON AUTH
01 ab122 1234 0001 AU123 99393
01 ab122 0001 1982 AU123 99393
01 ab122 1982 9929 99393 AU123
04 hjsss 8839 8302 JK920 32320
05 cg899 6728 32322 IKL020 65252
07 vv353 7872 0919 FV982 78282
07 w353 0919 8282 FV982 78282
to get to what I use:
-Request-
Select * from table_x
Start by old_id not in)
Select new_id
from table_x
)
CONNECT BY old_id new_id PRIOR =
AND code = code PRIOR
AND case EARLIER case =
PER person = person PREREQUISITE
-Request-
works very well with the sample data, but the problem is when executed with actual table that has 35K record...
Cause: The condition specified in a CONNECT BY clause caused a loop in the application, where the next record to be selected is a descendant of itself. When this happens, it may be no end to the query.
Action: Check the CONNECT BY clause and remove the circular reference.
Thank you
AK
Hello
CONNECT_BY_ISCYCLE is a pseudo-column that you can use in a query of CONNECTION BY NOCYCLE. It is separated from the CONNECT BY clause.
Try this:
Select code, "BREAKS", person
, SYS_CONNECT_BY_PATH (old_id, "/") AS path
from table_x
where CONNECT_BY_ISCYCLE = 1
Start by old_id not in)
Select new_id
from table_x
)
CONNECT BY NOCYCLE Old_id = new_id PRIOR
AND code = code PRIOR
AND 'CASE' = 'BOX' PRIOR
PER person = person PREREQUISITE
;
I hope that answers your question.
If not, post a small example data (CREATE TABLE and only relevant columns, INSERT statements) and also publish outcomes from these data.
Explain, using specific examples, how you get these results from these data.
Always say what version of Oracle you are using (for example, 11.2.0.2.0).See the FAQ forum: https://forums.oracle.com/message/9362002#9362002
-
Oracle: Connect loop in the user data
I understand when a loop can occur in Oracle. In principle that it is said if a recording is both parent to another node and at the same time he was a child to him, then it may go into a loop.
But I can't get why my this particular query is running in a loop.
SELECT Empno, Ename, Job FROM Emp START WITH Empno = 7839 CONNECT BY PRIOR Job='PRESIDENT'
Can someone please explain to me how these data can result in a loop. I did a CONNECT_BY_ISCYCLE check and found that the closure of the case is KING (Chairman). But I still don't understand how can be possible, that the KING is the President and I do not see anything in which it becomes child and parent to any record in the table.
Please explain to me, why is it a mistake and where is the loop?
Thanks in advance.
Maybe if I pull on the hierarchy of your query, you will see what he is doing...
PRESIDENT OF KING 7839<-- start="">-->
PRESIDENT OF KING 7839<-- prior="" job='PRESIDENT'>-->
PRESIDENT OF KING 7839<-- prior="" job='PRESIDENT'>-->
.. etc.
.. etc.
ANALYST SCOTT 7788<-- prior="" job='PRESIDENT'>-->
7902 FORD ANALYST<-- prior="" job='PRESIDENT'>-->
7369 SMITH CLERK<-- prior="" job='PRESIDENT'>-->
7934 MILLER CLERK<-- prior="" job='PRESIDENT'>-->
7900 JAMES CLERK<-- prior="" job='PRESIDENT'>-->
CLERK OF 7876 ADAMS<-- prior="" job='PRESIDENT'>-->
7566 JONES MANAGER<-- prior="" job='PRESIDENT'>-->
MANAGER CLARK 7782<-- prior="" job='PRESIDENT'>-->
BLAKE MANAGER 7698<-- prior="" job='PRESIDENT'>-->
7499 ALLEN SALESMAN<-- prior="" job='PRESIDENT'>-->
7521 WARD SALESMAN<-- prior="" job='PRESIDENT'>-->
7654 MARTIN SALESMAN<-- prior="" job='PRESIDENT'>-->
7844 TURNER SELLER<-- prior="" job='PRESIDENT'>-->
ANALYST SCOTT 7788<-- prior="" job='PRESIDENT'>-->
7902 FORD ANALYST<-- prior="" job='PRESIDENT'>-->
7369 SMITH CLERK<-- prior="" job='PRESIDENT'>-->
7934 MILLER CLERK<-- prior="" job='PRESIDENT'>-->
7900 JAMES CLERK<-- prior="" job='PRESIDENT'>-->
CLERK OF 7876 ADAMS<-- prior="" job='PRESIDENT'>-->
7566 JONES MANAGER<-- prior="" job='PRESIDENT'>-->
MANAGER CLARK 7782<-- prior="" job='PRESIDENT'>-->
BLAKE MANAGER 7698<-- prior="" job='PRESIDENT'>-->
7499 ALLEN SALESMAN<-- prior="" job='PRESIDENT'>-->
7521 WARD SALESMAN<-- prior="" job='PRESIDENT'>-->
7654 MARTIN SALESMAN<-- prior="" job='PRESIDENT'>-->
7844 TURNER SELLER<-- prior="" job='PRESIDENT'>-->
Thus, in the first level of the hierarchy is your record START you WITH.
When all folders are examined, the test of the PREREQUISITE WORK examines the top level folder, determines that he was the PRESIDENT and therefore each record matches this condition.
Then, each of these folders are evaluated to determine the child records. At this second level, only KING's post of PRESIDENT, he is the one who would have no record of the child and this WORK PRECONDITION = PRESIDENT will be valid for all records under the 2 KING level.
This model keeps occurring under each folder KING indefinitely.
-
CONNECT IN a loop in the user data
Could someone help me because I can not find a solution.
I want to build a tree of 3 tables (parent-> children-> detail)
Everything works fine with 2 tables, but when I add the third table I get always an error ORA: ORA-01436: CONNECT BY a loop in the user data
CREATE TABLE nineham (organisatie_id NUMBER
(, naam VARCHAR2 (50));
--
CREATE TABLE seizoenen (seizoen_id NUMBER
organisatie_id NUMBER
(, naam VARCHAR2 (50));
--
CREATE TABLE competities (competitie_id NUMBER
seizoen_id NUMBER
(, naam VARCHAR2 (50));
--
INSERT INTO nineham (organisatie_id, name) VALUES (1, 'ORGANISATIE_1');
INSERT INTO nineham (organisatie_id, name) VALUES (2, 'ORGANISATIE_2');
--
INSERT INTO seizoenen (seizoen_id, organisatie_id, naam) VALUES (1, 1, 'SEIZOEN_1');
INSERT INTO seizoenen (seizoen_id, organisatie_id, naam) VALUES (2, 1, 'SEIZOEN_2');
INSERT INTO seizoenen (seizoen_id, organisatie_id, naam) VALUES (1, 2, 'SEIZOEN_3');
INSERT INTO seizoenen (seizoen_id, organisatie_id, naam) VALUES (2, 2, 'SEIZOEN_4');
--
INSERT INTO competities (competitie_id, seizoen_id, naam) VALUES (1, 1, 'COMPETITIE_1');
INSERT INTO competities (competitie_id, seizoen_id, naam) VALUES (2, 1, 'COMPETITIE_2');
INSERT INTO competities (competitie_id, seizoen_id, naam) VALUES (3, 2, 'COMPETITIE_3');
INSERT INTO competities (competitie_id, seizoen_id, naam) VALUES (4, 2, "COMPETITIE_4");
INSERT INTO competities (competitie_id, seizoen_id, naam) VALUES (5, 2, "COMPETITIE_5");
--
--
--
SELECT LPAD (' ', LEVEL * 2, ' ') | Naam AS display
LEVEL AS lvl
DE)
SELECT NULL AS parent
child organisatie_id
naam
To nineham
UNION ALL
SELECT organisatie_id AS parent
child seizoen_id
naam
OF seizoenen
UNION ALL
Seizoen_id SELECT parent
Child AS NULL
naam
OF competities
)
START WITH parent IS NULL
CONNECT BY PRIOR child = parent
;
Hello
When you perform a CONNECT BY query, you must have an identifier unique to each child. You use numbers that are unique to each table, but are no longer unique when you UNION the paintings together. When the query finds children 1, the fact that average organisatie_id = 1, or does that mean seizoen_id = 1, or does this mean competetite_id = 1?
Etbin suggested you change data. Which can be difficult; It might not even be possible. In addition, you must make sure that the new IDS are unique. When you assign advent = 10 to a node, for example, you must be sure that 10 is not an organisatie_id.
Here is another solution that is guarranted to generate unique IDS, without changing the actual tables:
SELECT LPAD (' ', LEVEL * 2, ' ') | Naam AS display
LEVEL AS lvl
DE)
SELECT NULL AS parent
organisatie_id AS child
, 1 AS the level of
naam
To nineham
UNION ALL
SELECT organisatie_id AS parent
seizoen_id AS child
, 2 AS the level of
naam
OF seizoenen
UNION ALL
SELECT seizoen_id AS parent
Child AS NULL
, 3 AS the level of
naam
OF competities
)
START WITH parent IS NULL
AND level = 1
CONNECT BY PRIOR child = parent
AND layer = FIRST + 1
;
The composite key formed by your original ID, and the new level number is unique.
Note that the query above is exactly what you have posted, with the addition of the lines that refer to level.
-
Hi, do an error-ORA-01436: CONNECT BY a loop in the user data
Hi, I am getting an error when executing the select query
SELECT callreleasetime, calleventduration
OF temp_med_partial_records_0001
CONNECT BY PRIOR Callreleasetime = callreleasetime
AND IMSI PRIOR = IMSI
AND PRIOR connectedcallingnumber = connectedcallingnumber
Published by: user8731258 on February 8, 2011 02:34example:
drop table test; create table test(no number, IMSP number, IMSC number, data varchar2(10)); insert into test values(1,1,2,'a'); insert into test values(1,2,3,'a'); insert into test values(1,2,4,'a'); insert into test values(1,3,5,'b'); insert into test values(1,4,5,'b'); insert into test values(2,1,2,'c'); insert into test values(2,2,3,'c'); insert into test values(4,1,2,'d'); insert into test values(4,2,3,'d'); insert into test values(5,1,2,'e'); insert into test values(5,2,3,'e'); insert into test values(5,2,3,'e'); insert into test values(6,1,2,'f'); commit;
SELECT * FROM test CONNECT BY PRIOR no=no AND PRIOR IMSP=IMSC AND PRIOR data=data; NO IMSP IMSC DATA ---------------------- ---------------------- ---------------------- ---------- 1 1 2 a 1 2 3 a 1 1 2 a 1 2 4 a 1 1 2 a 1 3 5 b 1 4 5 b 2 1 2 c 2 2 3 c 2 1 2 c 4 1 2 d 4 2 3 d 4 1 2 d 5 1 2 e 5 2 3 e 5 1 2 e 5 2 3 e 5 1 2 e 6 1 2 f
Your case
SELECT * FROM test CONNECT BY PRIOR no=no AND PRIOR IMSP=IMSP AND PRIOR data=data; ORA-01436:
-
error ORA-01436: CONNECT BY a loop in the user data
Y is it breaks down, when the query with the data of test works well. Added the result of individual queries of the database.
times parent_order and the order can be same.
I tried with an example, and gives me the correct resultsSELECT * FROM (SELECT * FROM r_brj_linkage START WITH order_id = 'IQBGSR20' CONNECT BY PRIOR parent_downstream_orderid = order_id) WHERE alternate_linkage_rule_flag = 'N' SELECT parent_downstream_orderid, order_id, alternate_linkage_rule_flag FROM r_brj_linkage WHERE order_id = 'IQBGSR20'; output ------------ U206650.3 IQBGSR20 Y SELECT parent_downstream_orderid, order_id, alternate_linkage_rule_flag FROM r_brj_linkage WHERE order_id = 'U206650.3'; U206650.3 U206650.3 N
Published by: devarade on January 21, 2010 14:56SELECT * FROM (WITH t AS (SELECT 'XXX' parent_1, 'YYY' child_1, 'Y' flag FROM DUAL UNION ALL SELECT 'XYZ' AS parent_1, 'XXX' AS child_1, 'Y' AS flag FROM DUAL UNION ALL SELECT 'ZZZ' AS parent_1, 'XYZ' AS child_1, 'Y' AS flag FROM DUAL UNION ALL SELECT 'ABC' AS parent_1, 'ZZZ' AS child_1, 'N' AS flag FROM DUAL) SELECT * FROM t START WITH child_1 = 'ZZZ' CONNECT BY PRIOR parent_1 = child_1) WHERE flag = 'N';
Published by: devarade on January 21, 2010 15:06Ah, see what you mean now.
How about this:
SELECT * FROM ( WITH t AS ( SELECT 'XXX' parent_1, 'YYY' child_1, 'Y' flag FROM DUAL UNION ALL SELECT 'XYZ', 'XXX', 'Y' FROM DUAL UNION ALL SELECT 'ZZZ', 'XYZ', 'Y' FROM DUAL UNION ALL SELECT 'ZZZ', 'ZZZ', 'N' FROM DUAL ) SELECT * FROM t START WITH child_1 = 'YYY' CONNECT BY NOCYCLE PRIOR NULLIF(parent_1,child_1) = child_1 ) WHERE flag = 'N';
-
Hierarchical query, connect in a loop in the user data
Hello
Is there a method to find the node that has the problem in the application of the factorial.
As my data is complex and has up to 10 levels, it is not possbile to correct manually. I have idendtified the series 'START WITH', what is causing the problem. But I couldn't find the correct nodes in the seris that creates the loop.
Does not not in the management of exceptions even.
Please advice.
Kind regards
BenzYou did not specify a version, but the operators CONNECT BY NOCYCLE and CONNECT_BY_ISCYCLE can be used to detect cycles.
-
CREATE or REPLACE (name in varchar2) procedure Compress_tab_partition
is
last_mnth_var varchar2 (8);
curr_mnth_var varchar2 (8);
number of last_mnth;
number of curr_mnth;
last_partition varchar2 (8);
high_val varchar2 (4000);
StartSelect to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00' in the double last_mnth_var;
Select to_char (sysdate, 'YYYY') | TO_CHAR (sysdate, 'mm') | ' 00' in the double curr_mnth_var;
Select to_number (last_mnth_var) in the double last_mnth;
Select to_number (curr_mnth_var) in the double curr_mnth;Dbms_output.put_line ('Compression of GOLDMGR Table scores.' | table-name |) "to go". ») ;
Dbms_output.put_line(' ');/ * Step 1 - identify the name of the partition of the specified table must be compressed * /.
Select high_value from high_val from user_tab_partitions where table_name = table-name;
Select nom_partition into last_partition from user_tab_partitions where table_name = table-name and high_value = rtrim (high_val);/ * Step 2 - Alter partition table to compress * /.
run immediately "ALTER TABLE GOLDMGR." | table_name | ' CHANGE THE PARTITION '. last_partition | "COMPRESS by low query";
/ * Step 3 - Index rebuild step * /.
I'm in (select index_name in user_indexes where table_name = table-name)
loop
run immediately "ALTER INDEX GOLDMGR." | i.index_name |' REBUILD ";
end loop;Dbms_output.put_line (' COMPLETED: compress the Table partitions change.) ") ;
end;
/I'm getting an error like: Error (21,100): PL/SQL: ORA-00997: illegal use of the LONG data type
Please resolve.
HIGH_VALUE datatype is LONG. You may not use for a long TIME in WHERE clause expressions. You need to loop through the partitions by selecting HIGH_VALUE and then comparing. Secondly, there is no need to select double to calculate expressions. For example:
Select to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00' in the double last_mnth_var;
should be replaced by
last_mnth_var: = to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00'.
and there is no need to add_months here:
last_mnth_var: = to_char (trunc (sysdate, 'MM') - 1, "YYYYMM"). ' 00'.
But the main question is simply ALTER TABLE MODIFY PARTITION COMPRESS allows compression but does not compress. You must issue ALTER TABLE MOVE PARTITION COMPRESS:
SQL > create table tbl (n) partition by range (n)
2 (partition p1 values less than (maxvalue))
3. Select lpad('X',4000,'X') from dual connect by level<=>=>
4.Table created.
SQL > select bytes
2 from WHERE user_segments
3 where nom_segment = 'TBL '.
4 and nom_partition = 'P1 '.
5.BYTES
----------
830472192SQL > alter table tbl
2. change the partition p1 compress
3.Modified table.
SQL > select bytes
2 from WHERE user_segments
3 where nom_segment = 'TBL '.
4 and nom_partition = 'P1 '.
5.BYTES
----------
830472192SQL > alter table tbl
2. move the partition p1 compress
3.Modified table.
SQL > select bytes
2 from WHERE user_segments
3 where nom_segment = 'TBL '.
4 and nom_partition = 'P1 '.
5.BYTES
----------
8388608SQL >
SY.
-
Unable to connect even after the user password reset
Hai all,
10.2.0.3 on Linux
Reset a user password and the user is unable to connect as you can see below
[oracle@testdb 10.2.0] $ sqlplus sys/Manager as sysdba
SQL * more: release 10.2.0.3.0 - Production on Tue Nov 27 16:20:21 2012
Copyright (c) 1982, 2006, Oracle. All rights reserved.
Connected to:
Oracle Database 10 g Enterprise Edition release 10.2.0.3.0 - Production
With partitioning, OLAP and Data Mining options
SQL > alter user sysman identified by oracle.
Modified user.
SQL > disconnected from Oracle Database 10 g Enterprise Edition release 10.2.0.3.0 - Production
With partitioning, OLAP and Data Mining options
[oracle@testdb 10.2.0] $ sqlplus sysman/oracle
SQL * more: release 10.2.0.3.0 - Production on Tue Nov 27 16:20:32 2012
Copyright (c) 1982, 2006, Oracle. All rights reserved.
ERROR:
ORA-01017: name of user and password invalid. connection refused
Unable to connect even after the user password resetCheck
How to change the password of the database user Sysman (DB control repository schema) [ID 259379.1]
EMCA 11 g fails with the error "ORA-01017: name of user and password invalid; connection refused"and" username/password invalid name; For DBSNMP or user SYSMAN"[ID 741530.1] -
ORA-00997: illegal use of the LONG data type
Hi all
11.2.0.1
ALTER TABLE SAFDB MOVE TABLESPACE DATA_TS_ENC
*
ERROR on line 1:
ORA-00997: illegal use of the LONG data type
Why illegal? How can I move this table?
Thank you very much
pK
Take a look who
http://aprakash.WordPress.com/2011/01/06/how-to-move-table-containing-long-or-LOB-columns/
Concerning
-
Hello
I use D6502 Z2 Xperia.
E-mail application default of the Xperia unable to use the Mobile data connection after she returned to "Restrict the database" defined.
It works fine with WiFi. I tried resetting the application Email and MS Exchange Service, but the problem is still there.
Is there a solution for this problem.
This problem has been resolved after update to Android (Lolipop) 5. Thanks Sony.
-
I've worked on my computer fine all day and then went to log on to the evening and received this message. When I look on user profiles it shows my user as a 'backup '. I have a lot of documents and emails that I need. Is there a way to fix this, other than to create a new account and delete the old one?
HelloThe data is still there and accessible by any admin look under C:\Users account where C: is
the drive where the profiles of users (folders).You can try to fix it with Safe Mode - repeatedly press F8 as you bootup. Also the ADMINISTRATOR account of
Safe mode has no password by default unless someone has changed.These problems and similar bugs can help:
A temporary profile is loaded after you connect to a Windows Vista-based system
http://support.Microsoft.com/kb/947242How to fix error "your user profile was not loaded correctly! You have been connected with a
temporary profile. "in Vista
http://www.Vistax64.com/tutorials/135858-user-profile-error-logged-temporary-profile.htmlSome programs such as the updated Google (if you added the toolbar Google, Chrome or Google Earth)
has been known to cause this problem.How to fix error "the user profile Service has no logon. Profile of user cannot
be responsible. »
http://www.Vistax64.com/tutorials/130095-user-profile-service-failed-logon-user-profile-cannot-loaded.html-----------------------------------------------
Other methods:
Use the hidden administrator account to lower your user account (to the lowest level) APPLY/OK then go back
and reset it to the Admin APPLY/OK - this clearly allows corruption. Do this several times. Do the same for others
accounts that may be difficult. If necessary you can also reset your password in the accounts.
Do not forget to leave your Admin account and the other to the desired level.Make another Admin account with your password and use it to fix the others if necessary. (just for
repair, don't use regular account, not a safety valve) always keep a spare ADMIN account.DO NOT LEAVE THE ENABLED LSA OR USE DAILY. If it corrupts you are toast!
How to enable or disable the real built-in Administrator account in Vista
http://www.Vistax64.com/tutorials/67567-administrator-account.htmlYou can run the Admin account hidden from the prompt by if necessary.
This tells you how to access the System Recovery Options and/or a Vista DVD
http://windowshelp.Microsoft.com/Windows/en-us/help/326b756b-1601-435e-99D0-1585439470351033.mspxIf you cannot access your old account, you can still use an Admin to migrate to another (do not forget to always
not that an Admin account that is not used except for testing and difficulty).Difficulty of a corrupted user profile
http://windowshelp.Microsoft.com/Windows/en-AU/help/769495bf-035C-4764-A538-c9b05c22001e1033.mspxI hope this helps.
Rob Brown - MS MVP - Windows Desktop Experience: Bike - Mark Twain said it right.
Maybe you are looking for
-
Why am I being asked to do this? I have not changed anything. "Update of your Apple ID, you must verify your identity to make this change." Answer your security questions to continue. "
-
Hi all I saw a lot of people have the same problem with HP, but I can't find the driver for my machine. My machine is HP ProBook 6560 b runing Windows 7 32 bit. In my device manager I have an unknown device and when to go in properties I found the fo
-
Transfer of the Club DollarPhoto
Hi I tried to transfer my existing images to Adobe, but every time he asks me to sign up for an account and I already have an account so don't want to not add to my bills, please can you help me, thank you very muchConcerningJudith Rose
-
When we need to use the partition table?
-
Why I can't change my pencil smoothing?
HelloWhen I select my pencil in host Adobe, the smoothing option is stuck on 50 and cannot be changed. I recently subscribed to the suite adobe together, and when I did the apps on creative cloud went from "try the trial" to "install". I pressed Inst