Wednesday 5 February 2014

JD Edwards seeing the content of your BLOBS (ooohhh errr)

I know it sounds a little personal, but I’ve often wanted to look into the contents of some ones UO (user overrride) BLOBs to verify problems.

It’s not overly simple, but with the help of friends in high places:  www.dba-oracle.com/t_convert_blob_varchar_datatype.htm

So, if you create the function then you can use it some SQL – first create the function F

create or replace function F(B BLOB)
return clob is
  c clob;
  n number;
begin
  if (b is null) then
    return null;
  end if;
  if (length(b)=0) then
    return empty_clob();
  end if;
  dbms_lob.createtemporary(c,true);
  n:=1;
  while (n+32767<=length(b)) loop
    dbms_lob.writeappend(c,32767,utl_raw.cast_to_varchar2(dbms_lob.substr(b,32767,n)));
    n:=n+32767;
  end loop;
  dbms_lob.writeappend(c,length(b)-n+1,utl_raw.cast_to_varchar2(dbms_lob.substr(b,length(b)-n+1,n)));
  return c;
end;

Then use it in your SQL

select f(uobindta) from dv910.f98950
where UOOBNM = 'P5310' and uovers = 'CMS0002' and uouoty in ('GF','GD')
and uouser = '*PUBLIC';

You’ll get something like the following, note that this is a corruption:  Not ending with the correct tag.

"(CLOB) <?xml version="1.0" encoding="UTF-8"?>
<GridOverride><formatType>0</formatType><seqNumber>1</seqNumber><numCols>48</numCols><retCol>0</retCol><freezeCol>0</freezeCol><freezeRow>0</freezeRow><zoomFactor>100</zoomFactor><formatName>CMS</formatName><isPixel>1</isPixel><gridColumn><virtCol>1</virtCol><origCol>1</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>22</idObject><colWidth>68</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>MCU</alias><sortSeq>1</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>2</virtCol><origCol>2</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>23</idObject><colWidth>62</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>CONO</alias><sortSeq>2</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>3</virtCol><origCol>3</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>24</idObject><colWidth>221</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>DL01</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>13</virtCol><origCol>4</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>25</idObject><colWidth>60</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>REQB</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>4</virtCol><origCol>5</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>26</idObject><colWidth>46</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>BSTC</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>8</virtCol><origCol>6</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>27</idObject><colWidth>57</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>OREQ</alias><sortSeq>0</sortSeq><sortOr..."

 

See how this output is truncated in SQLDeveloper whether I run it as a script or just run it – a real pain.

 

I need to go “old school” on it to get all of the unadulterated data, I use a script like this is SQL plus:

spool F98950.txt
set linesize 30000
set long 80000
set pagesize 0
set wrap on
select f(uobindta) from dv910.f98950
where UOOBNM = 'P5310' and uovers = 'CMS0002' and uouoty in ('GF','GD')
and uouser = '*PUBLIC';
spool off

 

See below for a nicely truncated UO:

 

<?xml version="1.0" encoding="UTF-8"?>
<GridOverride><formatType>0</formatType><seqNumber>1</seqNumber><numCols>146</nu
mCols><retCol>19</retCol><freezeCol>4</freezeCol><freezeRow>-32767</freezeRow><z
oomFactor>100</zoomFactor><formatName>GW Format</formatName><isPixel>1</isPixel>
<gridColumn><virtCol>2</virtCol><origCol>1</origCol><backColor>-1</backColor><fo
reColor>0</foreColor><idObject>135</idObject><colWidth>235</colWidth><colHidden>
0</colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight
><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</u
nderline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><widt
h>0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><it
alic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>
DL01</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn
><virtCol>3</virtCol><origCol>2</origCol><backColor>-1</backColor><foreColor>0</
foreColor><idObject>137</idObject><colWidth>55</colWidth><colHidden>0</colHidden
><fontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1<
/charset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><st
rikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><
weight>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</ital
ic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>SCOS</alias>

<sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>5<
/virtCol><origCol>3</origCol><backColor>-1</backColor><foreColor>0</foreColor><i
dObject>167</idObject><colWidth>111</colWidth><colHidden>0</colHidden><fontHeade
r><height>-12</height><width>0</width><weight>700</weight><charset>1</charset><f
aceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</
strikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400<
/weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underli
ne>0</underline><strikeout>0</strikeout></fontCol><alias>OQTC</alias><sortSeq>0<
/sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>6</virtCol><o
rigCol>4</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>390
</idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><height>-12
</height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial
</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></f
ontHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><char
set>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underli
ne><strikeout>0</strikeout></fontCol><alias>CO</alias><sortSeq>0</sortSeq><sortO
rder>A</sortOrder></gridColumn><gridColumn><virtCol>7</virtCol><origCol>5</origC
ol><backColor>-1</backColor><foreColor>0</foreColor><idObject>163</idObject><col
Width>126</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><wid
th>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><i
talic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><fo
ntCol><height>-12</height><width>0</width><weight>400</weight><charset>1</charse
t><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeout
>0</strikeout></fontCol><alias>CURO</alias><sortSeq>0</sortSeq><sortOrder>A</sor
tOrder></gridColumn><gridColumn><virtCol>8</virtCol><origCol>6</origCol><backCol
or>-1</backColor><foreColor>0</foreColor><idObject>138</idObject><colWidth>111</
colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width
><weight>700</weight><charset>1</charset><faceName>Arial</faceName><italic>0</it
alic><underline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><heig
ht>-12</height><width>0</width><weight>400</weight><charset>1</charset><faceName
>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeo
ut></fontCol><alias>COAM</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gr

idColumn><gridColumn><virtCol>13</virtCol><origCol>7</origCol><backColor>-1</bac
kColor><foreColor>0</foreColor><idObject>180</idObject><colWidth>112</colWidth><
colHidden>0</colHidden><fontHeader><height>-12</height><width>0</width><weight>7
00</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><unde
rline>0</underline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</he
ight><width>0</width><weight>400</weight><charset>1</charset><faceName>Arial</fa
ceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontC
ol><alias>ROAM</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><
gridColumn><virtCol>14</virtCol><origCol>8</origCol><backColor>-1</backColor><fo
reColor>0</foreColor><idObject>148</idObject><colWidth>0</colWidth><colHidden>1<
/colHidden><fontHeader><height>-12</height><width>0</width><weight>700</weight><
charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</und
erline><strikeout>0</strikeout></fontHeader><fontCol><height>-12</height><width>
0</width><weight>400</weight><charset>1</charset><faceName>Arial</faceName><ital
ic>0</italic><underline>0</underline><strikeout>0</strikeout></fontCol><alias>MC
U</alias><sortSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><v
irtCol>15</virtCol><origCol>9</origCol><backColor>-1</backColor><foreColor>0</fo
reColor><idObject>149</idObject><colWidth>0</colWidth><colHidden>1</colHidden><f
ontHeader><height>-12</height><width>0</width><weight>700</weight><charset>1</ch
arset><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strik
eout>0</strikeout></fontHeader><fontCol><height>-12</height><width>0</width><wei
ght>400</weight><charset>1</charset><faceName>Arial</faceName><italic>0</italic>
<underline>0</underline><strikeout>0</strikeout></fontCol><alias>CONO</alias><so
rtSeq>0</sortSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>16</v
irtCol><origCol>10</origCol><backColor>-1</backColor><foreColor>0</foreColor><id
Object>150</idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><
height>-12</height><width>0</width><weight>700</weight><charset>1</charset><face
Name>Arial</faceName><italic>0</italic><underline>0</underline><strikeout>0</str
ikeout></fontHeader><fontCol><height>-12</height><width>0</width><weight>400</we
ight><charset>1</charset><faceName>Arial</faceName><italic>0</italic><underline>
0</underline><strikeout>0</strikeout></fontCol><alias>REQB</alias><sortSeq>0</so
rtSeq><sortOrder>A</sortOrder></gridColumn><gridColumn><virtCol>17</virtCol><ori
gCol>11</origCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>253<
/idObject><colWidth>0</colWidth><colHidden>1</colHidden><fontHeader><height>-12<
/height><width>0</width><weight>700</weight><charset>1</charset><faceName>Arial<
/faceName><italic>0</italic><underline>0</underline><strikeout>0</strikeout></fo
ntHeader><fontCol><height>-12</height><width>0</width><weight>400</weight><chars
et>1</charset><faceName>Arial</faceName><italic>0</italic><underline>0</underlin
e><strikeout>0</strikeout></fontCol><alias>RQBD</alias><sortSeq>0</sortSeq><sort
Order>A</sortOrder></gridColumn><gridColumn><virtCol>4</virtCol><origCol>12</ori
gCol><backColor>-1</backColor><foreColor>0</foreColor><idObject>134</idObject><c
olWidth>72</colWidth><colHidden>0</colHidden><fontHeader><height>-12</height><wi
dth>0</width><weight>700</weight><charset>1</charset><faceName>Arial</faceName><
italic>0</italic><underline>0</underline><strikeout>0</strikeout></fontHeader><f
ontCol><height>-12</height><width>0</width><weight>400</weight><charset>1</chars
et><faceName>Arial</faceName><italic>0</italic><underline>0</underline><strikeou
t>0</strikeout></fontCol><alias>LNID</alias><sortSeq>1</sortSeq><sortOrder>A</so
rtOrder></gridColumn><gridColumn><virtCol>18</virtCol><origCol>13</origCol><back
Color>-1</backColor><foreColor>0</foreColor><idObject>254</idObject><colWidth>0<
/colWidth><colHidden>1</colHidden><fontH

 

When a GD and GF is saved properly, the output is more like the below (note that this is 50Kb for a single UO!!!!

<foreColor>0</foreColor>
<idObject>121</idObject>
<colWidth>65</colWidth>
<colHidden>0</colHidden>
<colFrzHidden>0</colFrzHidden>
<colFrozen>0</colFrozen>
<fontHeader>
<height>-12</height>
<width>0</width>
<weight>700</weight>
<charset>1</charset>
<faceName>Arial</faceName>
<italic>0</italic>
<underline>0</underline>
<strikeout>0</strikeout>
</fontHeader>
<fontCol>
<height>-12</height>
<width>0</width>
<weight>400</weight>
<charset>1</charset>
<faceName>Arial</faceName>
<italic>0</italic>
<underline>0</underline>
<strikeout>0</strikeout>
</fontCol>
<alias>USER</alias>
<sortSeq>0</sortSeq>
<sortOrder>A</sortOrder>
</gridColumn>
</GridOverride>

No comments:

Extending JDE to generative AI