SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
16,
17,
18,
19,
20,
Substr(tkt_summary, 1, CASE
WHEN Length(tkt_summary) <= 100 THEN 100
ELSE Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p21,
CASE
WHEN Length(tkt_summary) <= 100 THEN NULL
ELSE Substr(tkt_summary, Instr(tkt_summary, ' ', 100-Length(tkt_summary
), 1)
+ 1)
END tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
16,
17,
18,
19,
Substr(tkt_summary, 1, CASE
WHEN Length(tkt_summary) <= 100 THEN 100
ELSE Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p20,
CASE
WHEN Length(tkt_summary) <= 100 THEN NULL
ELSE Substr(tkt_summary, Instr(tkt_summary, ' ', 100-Length(
tkt_summary), 1)
+ 1)
END tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
16,
17,
18,
Substr(tkt_summary, 1, CASE
WHEN Length(tkt_summary) <= 100
THEN
100
ELSE Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p19,
CASE
WHEN Length(tkt_summary) <= 100 THEN NULL
ELSE Substr(tkt_summary, Instr(tkt_summary, ' ', 100
-Length(
tkt_summary), 1)
+ 1)
END tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
16,
17,
Substr(tkt_summary, 1, CASE
WHEN
Length(tkt_summary) <= 100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p18,
CASE
WHEN Length(tkt_summary) <= 100 THEN NULL
ELSE Substr(tkt_summary, Instr(tkt_summary, ' '
, 100
-Length(
tkt_summary), 1)
+ 1)
END tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
16,
Substr(tkt_summary, 1, CASE
WHEN
Length(tkt_summary) <= 100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p17,
CASE
WHEN Length(tkt_summary) <= 100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ', 100
-Length(
tkt_summary), 1)
+ 1)
END tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
15,
Substr(tkt_summary, 1, CASE
WHEN
Length(tkt_summary) <= 100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary),
1)
END) p16,
CASE
WHEN Length(tkt_summary) <= 100
THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM (SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
14,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary)
,
1)
END) p15,
CASE
WHEN Length(tkt_summary
) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
13,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p14,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
p12,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p13,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
p11,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p12,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p10,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p11,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
p9,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p10,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
p8,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p9,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
p7,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p8,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
p6,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p7,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
p5,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p6,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
p4,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p5,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
p3,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p4,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
p2,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p3,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT p1,
Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p2,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary,
Instr(tkt_summary, ' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM
(SELECT Substr(tkt_summary, 1,
CASE
WHEN
Length(tkt_summary) <=
100
THEN
100
ELSE
Instr(tkt_summary, ' ',
100 - Length(tkt_summary
),
1)
END) p1,
CASE
WHEN Length(
tkt_summary) <=
100 THEN
NULL
ELSE Substr(tkt_summary
,
Instr(tkt_summary,
' ',
100
-Length(
tkt_summary), 1)
+ 1)
END
tkt_summary
FROM ticket)))
)))))))
))))))))));
CREATE OR replace FUNCTION Str_break (v_str VARCHAR2)
RETURN VARCHAR2
AS
v_breakstr VARCHAR2(2000);
v_return VARCHAR2(4000) := NULL;
v_maxlen NUMBER := 50;
v_breakpos NUMBER;
BEGIN
v_breakstr := v_str;
LOOP
IF Length(v_breakstr) <= 50 THEN
IF v_return IS NULL THEN
v_return := v_breakstr;
ELSE
v_return := v_return
|| Chr(10)
|| v_breakstr;
END IF;
exit;
END IF;
SELECT Instr(v_breakstr, ' ', v_maxlen - Length(v_breakstr))
INTO v_breakpos
FROM dual;
IF v_breakpos = 0 THEN
v_breakpos := Length(v_breakstr);
END IF;
IF v_return IS NOT NULL THEN
v_return := v_return
|| Chr(10);
END IF;
v_return := v_return
|| Substr(v_breakstr, 1, v_breakpos);
v_breakstr := Substr(v_breakstr, v_breakpos + 1);
END LOOP;
RETURN( v_return );
END;
/
Seems to work in the few test cases that I ran at it. IF v_breakpos = 0 THEN
v_breakpos := Length(v_breakstr);
END IF;
to this: IF v_breakpos = 0 THEN
v_breakpos := v_maxlen;
END IF;
That occurs around line 28. I think it can get into an infinite loop if there is a "word" greater than 50 characters. This change should fix that.
Can you not control the text wrapping at display time?
What application is displaying the data?