POSITION function
Hello Experts,
I am using the following column formula:
POSITION('Administrators' in valueof (NQ_SESSION.GROUP)).
This returns value 65 if the logged in user is a part of the Administrator Group else it returns 0.
The problem is I want to convert this value to either integer .This returns the value in varbinary format.
Can anyone help me?
thx,
parag
Hello Kishore,
I have a simple report with this column.
When Im putting a filter on this column:
POSITION('Manager' in VALUEOF(NQ_SESSION.GROUP))>0,
When, Im logged in as a user who is not a manager, it is still returning me records rather than showing No Results.
Similar Messages
-
The "reverse position" function for midi in the transform window does not seem to be working.
So I'm trying to have all of the notes of my midi region play in reverse order. I found out after some research that the way to do this is via the "reverse position" function in the transform window. I opened the parameters for this and it gave me an option to select "inside" a set of measure positions, so I set it to between measure 99 (99 1 1 1) and measure 172 (172 1 1 1) and tried to "select and operate." Nothing. Tried to select manually and then hit "operate." Nothing. I then changed the condition from "inside" to "all" and manually select, then hit "operate," and this time it showed "340 events in one midi region found" at the bottom of the window but still did nothing. I haven't manually counted the notes in the region but that seems like a fair estimate that it's the right number of notes (midi events).
Any idea why this function seems to do absolutely nothing?((/MAIN/NODE1NODE2 = 'x') EX)
This means that the condition will eval to true or false ONLY if the node exists?
(Note: In the actual scenario, I have an IDOC and I wish to perform a similar check on a tag that may or may not exist depending
upon the situation).
If your requirement is to check if a node exists or not then below is the condition which you should be using:
Left Operand: /MAIN/NODE1/NODE2
Middle Operand: EX
NO right operand in this case
Regards,
Abhishek. -
Position function query in XSLT
I have a query regarding XSLT mapping
I have two E1EDK03 segments for the same qualifier. But I want the values based on posiotion
Example:
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110720</DATUM>
</E1EDK03>
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110905</DATUM>
</E1EDK03>
If position = 1, I need the 1st set of E1EDK03
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110720</DATUM>
</E1EDK03>
If position = 2, I need the 2nd set of E1EDK03
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110905</DATUM>
</E1EDK03>
How to achieve that using XSLT
ThanksHi,
Since we have E1EDK03 with same qualifier 012, I don't have any other identifier to distinguish them, because at one instance I need 1st occurrence of E1EKD03 structure and another instance I need the 2nd occurrence of E1EDK03.
If you observe, only DATUM will have different values. I was trying to do that using position function
I have defined a variable to copy the segments and later trying to get the each segment based on position
<!--copying all the E1EDK03 qualifier 012 segments -->
<xsl:variable name="e1edk03_qual_012">
<xsl:for-each select="//IDOC/*">
<xsl:if test="starts-with(name(), 'E1EDK03') and IDDAT = '012'">
<xsl:copy-of select="."></xsl:copy-of>
</xsl:if>
</xsl:for-each>
</xsl:variable>
Now the above code has
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110720</DATUM>
</E1EDK03>
<E1EDK03 SEGMENT="1">
<IDDAT>012</IDDAT>
<DATUM>20110905</DATUM>
</E1EDK03>
I want to split these into two E1EDK03 segments and use further in the XSLT mapping and populate in the target
Thanks -
Position() function in XPATH
Hello,
does anyone know how to get the position() function to work in a XPATH Queries? What I tried until now is
SQL> SELECT EXTRACTVALUE (COLUMN_VALUE, '/row/a/position()') p
FROM TABLE (XMLSEQUENCE (XMLTYPE ('<row><a></a><a></a></row>')))
Error at line 0
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: '/row/a/position()'The XPATH expression should be fine as it is tested in Stylus Studio.
Any clues?Does this help
SQL> select extractvalue(column_value('/row/a[position()]') p
2 from table(xmlsequence(xmltype('<row><a></a><a></a><row>')));
P
1 row selected
SQL> select extractvalue(column_value('/row/a[position()=1]') p
2 from table(xmlsequence(xmltype('<row><a></a><a></a><row>')));
P
1 row selected
SQL> select extractvalue(column_value('/row/a[position()=1]') p
2 from table(xmlsequence(xmltype('<row><a>abc</a><a>def</a><row>')));
P
abc
1 row selected
SQL> select extractvalue(column_value('/row/a[position()]') p
2 from table(xmlsequence(xmltype('<row><a>abc</a><a>def</a><row>')));
P
abc
1 row selected http://www.liberidu.com/blog/?p=60 -
We are trying to update the Netezza.PRM file to include the Position function. When using it in Designer we get a Parse error that it found a comma (,) when it was expecting 'In' or 'Op' or '=='r '<' or '>'. Does anyone know the correct parameters for adding the Position function to the Netezza.PRM file?
There are no native functions for double-bar graphs in CVI. If you are looking for side-by-side bars, something like this
you can do it with a little trick explained by mzimmers and me in this discussion.
I'm not aware of a method to obtain stacked bar graphs, if you are looking for them.
Proud to use LW/CVI from 3.1 on.
My contributions to the Developer Zone Community
If I have helped you, why not giving me a kudos? -
How disable track position function in iTunes 7?
This function is driving me crazy and I can’t seem to be able to disable it!
iTunes remembers the how far along the song was played before I skip it. This means when the song plays again it comes in half way through.
I’m a woman on the verge make, please make it stop!
Thankscorrect,
GET INFO > OPTIONS > check or unckeck "Remember Playback Position"
You can do this in mass as well. Look for the option near the bottom of the edit window.
I love this new feature myself.
J. -
Changing option in function module
sir,
plz explain the role or importance of changing option in function module SE37hi check this example it had the usage of the changing option..
here the using will input the value to the perform and do some prosses and output some value..
PERNR TYPE P0001-PERNR Personnel Number
PLANS TYPE P0001-PLANS Position
ORGEH TYPE P0001-ORGEH Organizational Unit
DATE TYPE SY-DATUM SY-DATUM Date and time, current (applic
PLVAR TYPE PLOG-PLVAR '01' Plan Version
ISTAT TYPE PLOG-ISTAT '1' Planning Status
MANAGER TYPE ZHMSS_MANAGER Structure for manager for MSS
NO_PERNR_PLANS_ORGEH_SPEC No pernr, position or org unit specified
NO_EXIST_PLANS Position does not exist
INVALID_PLANS Position invalid
NO_EXIST_ORGEH Org unit does not exist
NO_EXIST_PERNR Personnel number does not exist
function z_get_orgunit_manager_info.
""Local interface:
*" IMPORTING
*" REFERENCE(PERNR) TYPE P0001-PERNR OPTIONAL
*" REFERENCE(PLANS) TYPE P0001-PLANS OPTIONAL
*" REFERENCE(ORGEH) TYPE P0001-ORGEH OPTIONAL
*" REFERENCE(DATE) TYPE SY-DATUM DEFAULT SY-DATUM
*" REFERENCE(PLVAR) TYPE PLOG-PLVAR DEFAULT '01'
*" REFERENCE(ISTAT) TYPE PLOG-ISTAT DEFAULT '1'
*" EXPORTING
*" REFERENCE(MANAGER) TYPE ZHMSS_MANAGER
*" EXCEPTIONS
*" NO_PERNR_PLANS_ORGEH_SPEC
*" NO_EXIST_PLANS
*" INVALID_PLANS
*" NO_EXIST_ORGEH
*" NO_EXIST_PERNR
if pernr is initial and
plans is initial and
orgeh is initial.
raise no_pernr_plans_orgeh_spec.
endif."pernr is initial and
if not pernr is initial.
if pernr cn '0123456789'.
exit.
endif.
*-- See if pernr exists
call function 'P_EMPLOYEE_CHECKEXISTENCE'
exporting
object_id = pernr
date = date
exceptions
employee_not_found = 01.
if sy-subrc ne 0.
raise no_exist_pernr.
exit.
endif.
*-- Obtain pernr position
call function 'HR_READ_INFOTYPE'
exporting
pernr = pernr
infty = c_infty_0001
begda = date
endda = date
importing
subrc = g_retcd
tables
infty_tab = i0001
exceptions
infty_not_found = 01
others = 02.
if sy-subrc eq 0.
describe table i0001 lines g_lines.
if g_lines > 0.
read table i0001 index 1.
*-- Got position now find org unit
perform zf_proc_get_om_objects tables i_objects
using c_otype_position
i0001-plans
plvar
c_rsign_a
c_relat_003
istat
date
date
c_otype_orgunit
changing g_retcd.
if g_retcd eq 0.
read table i_objects index 1.
g_orgeh = i_objects-sobid(8).
endif. "g_retcd eq 0.
endif. "g_lines > 0. for i0001
endif. "sy-subrc eq 0 hr_read_infotype
elseif not plans is initial.
if plans co '9' or
plans co '0'.
raise invalid_plans.
exit.
endif.
call function 'RH_READ_OBJECT'
exporting
plvar = plvar
otype = c_otype_position
objid = plans
istat = istat
begda = date
endda = date
langu = sy-langu
exceptions
not_found = 1
others = 2.
if sy-subrc <> 0.
raise no_exist_plans.
exit.
endif.
*-- Find org unit
perform zf_proc_get_om_objects tables i_objects
using c_otype_position
plans
plvar
c_rsign_a
c_relat_003
istat
date
date
c_otype_orgunit
changing g_retcd.
if g_retcd eq 0.
read table i_objects index 1.
g_orgeh = i_objects-sobid(8).
endif."g_retcd eq 0.
elseif not orgeh is initial.
call function 'RH_READ_OBJECT'
exporting
plvar = plvar
otype = c_otype_orgunit
objid = orgeh
istat = istat
begda = date
endda = date
langu = sy-langu
CHECK_STRU_AUTH = space "ASikaria, 10/15
exceptions
not_found = 1
others = 2.
if sy-subrc <> 0.
raise no_exist_orgeh.
exit.
endif.
g_orgeh = orgeh.
endif. "not pernr is initial.
if not g_orgeh is initial.
manager-orgeh = g_orgeh.
*-- Got org unit now find manager
perform zf_proc_get_om_objects tables i_objects
using c_otype_orgunit
manager-orgeh
plvar
c_rsign_b
c_relat_012
istat
date
date
c_otype_position
changing g_retcd.
if g_retcd eq 0.
read table i_objects index 1.
if sy-subrc eq 0.
manager-plans = i_objects-sobid.
call function 'Z_GET_POSITION_HOLDER'
exporting
plans = manager-plans
plvar = plvar
istat = istat
date = date
importing
pernr = manager-pernr
exceptions
position_not_exist = 1
position_invalid = 2
others = 3.
if sy-subrc <> 0.
clear: manager-pernr.
endif.
if not manager-pernr is initial.
*- BOC RTDK902962
*-- Obtained formatted name
clear: i0001.
refresh: i0001.
call function 'HR_READ_INFOTYPE'
exporting
pernr = manager-pernr
infty = c_infty_0001
begda = date
endda = date
importing
subrc = g_retcd
tables
infty_tab = i0001
exceptions
infty_not_found = 1
others = 2.
if sy-subrc eq 0.
read table i0001 index 1.
if sy-subrc eq 0.
manager-ename = i0001-ename.
endif.
endif.
*- EOC RTDK902962
*-- Obtain pernr information
*- Get 0002 data
clear: i0002.
refresh: i0002.
call function 'HR_READ_INFOTYPE'
exporting
pernr = manager-pernr
infty = c_infty_0002
begda = date
endda = date
importing
subrc = g_retcd
tables
infty_tab = i0002
exceptions
infty_not_found = 1
others = 2.
if sy-subrc eq 0.
read table i0002 index 1.
if sy-subrc eq 0.
manager-inits = i0002-inits.
manager-vorna = i0002-vorna.
manager-nachn = i0002-nachn.
manager-midnm = i0002-midnm.
endif.
endif.
*- Get 0105 data
clear: i0105.
refresh: i0105.
call function 'HR_READ_INFOTYPE'
exporting
pernr = manager-pernr
infty = c_infty_0105
begda = date
endda = date
importing
subrc = g_retcd
tables
infty_tab = i0105
exceptions
infty_not_found = 1
others = 2.
if sy-subrc eq 0.
describe table i0105 lines g_lines.
if g_lines > 0.
*- SAP usrid
loop at i0105 where subty = c_0105_usrid_subty.
manager-usrid = i0105-usrid.
endloop.
*- Email address
*// not sure where email is going to be stored but assume it is subtype
*// 0010
loop at i0105 where subty = c_0105_email_subty.
manager-email = i0105-usrid_long.
endloop.
endif. "g_lines > 0
endif."sy-subrc eq 0.
endif. "not manager-pernr is initial.
endif. "sy-subrc eq 0.
endif."g_retcd eq 0.
endif. "not g_orgeh is initial.
endfunction.
zposition holder
PLANS TYPE PLOG-OBJID Object ID
PLVAR TYPE PLOG-PLVAR '01' Plan Version
ISTAT TYPE PLOG-ISTAT '1' Planning Status
DATE TYPE SY-DATUM SY-DATUM Date and time, current (application server) date
PERNR TYPE P0001-PERNR Personnel Number
POSITION_NOT_EXIST Position does not exist
POSITION_INVALID Invalid position
function z_get_position_holder.
""Local interface:
*" IMPORTING
*" REFERENCE(PLANS) TYPE PLOG-OBJID
*" REFERENCE(PLVAR) TYPE PLOG-PLVAR DEFAULT '01'
*" REFERENCE(ISTAT) TYPE PLOG-ISTAT DEFAULT '1'
*" REFERENCE(DATE) TYPE SY-DATUM DEFAULT SY-DATUM
*" EXPORTING
*" REFERENCE(PERNR) TYPE P0001-PERNR
*" EXCEPTIONS
*" POSITION_NOT_EXIST
*" POSITION_INVALID
if plans cn '0123456789'.
raise position_invalid.
endif."plans cn '0123456789'.
if plans co '9'. "default position
exit.
endif.
call function 'RH_READ_OBJECT'
exporting
plvar = plvar
otype = c_otype_position
objid = plans
begda = date
endda = date
exceptions
not_found = 01
others = 02.
if sy-subrc ne 0.
raise position_not_exist.
else.
perform zf_proc_get_om_objects tables i_objects
using c_otype_position
plans
plvar
c_rsign_a
c_relat_008
istat
date
date
c_otype_pernr
changing g_retcd.
if g_retcd eq 0.
sort i_objects by begda descending. "get earliest rec
read table i_objects index 1.
if sy-subrc eq 0.
pernr = i_objects-sobid(8).
endif.
endif. "g_retcd eq 0.
endif. "sy-subrc ne 0.
endfunction.
regards,
venkat -
Getting the absolute text position from a DOM tree
Does anybody knows how to get the absolute text position of a node inside the DOM tree? Is there any DOM implementation that keep track of the absolute text position of each Node element or I need to overload somo methods by hand?
Regards,
Daniel OliveiraThe position() function in XSLT returns the order of the element.
For an xml document with elements:
<a>
<b></b>
<b></b>
</a>
<xsl:apply-templates select="b"/>
<xsl:template match="b">
Element b:
<xsl:value-of select="position()"/>
</xsl:template> -
"Read From Binary File" function Help ambiguity
I must be getting tired, but for some reason a doubt crept in my mind as I was designing a new piece of code this morning:
"is the "Read From Binary File" using the last file position or is it starting from the beginning of the file?"
"That's a stupid question", I told myself.
"I used this function a million times and have always assumed it is reusing the last file position. Moreover, there is no file offset input to that function, so WTH am I afraid of?"
So, for kicks, I fired up the Help window and read the following description (*):
Reads binary data from a file and returns it in data. How the data is read depends on the format of the specified file. This function does not work for files inside an LLB.
(*) BTW, has anybody ever complained that you can't select and copy anything from the floating Help Window?
Not much there. I particularly admire the phrasing of the second sentence... What about: "This function can do a lot of things, but it would much to complex to describe this is extensive details, so if you are asking, you probably can't afford using it"?
Anyhow, I clicked on the "Detailed Help" and got this (among other things):
Use the Set File Position function if you need to perform random access.
WHAT? I am pretty darn sure I DO NOT USE the Set File Position when I read a file in successive and contiguous chunks. I just pass the file refnum into a shift register and back to the function and that's it.
Now, the description of the "Refnum Out" ouput says: If file is a refnum or if you wire refnum out to another function, LabVIEW assumes that the file is still in use until you close it. Translated in plain English, is that supposed to mean that if the file is not closed it is open, or is that implying that it contains more info that just "the file is open and can be found here"?
I started searching around and finally ended up with the entry for "refnums, file I/O". Down the bottom of the (long) article, I found this under the heading "References to Objects or Applications" (but nothing specific to files, BTW):
...LabVIEW creates a refnum associated with that file, device, or network connection...
[...] LabVIEW remembers information associated with each refnum, such as the current location for reading from or writing to the object and the degree of user access, so you can perform concurrent but independent operations on a single object. If a VI opens an object multiple times, each open operation returns a different refnum. LabVIEW automatically closes refnums for you when a VI finishes running, but it is a good programming practice to close refnums as soon as you are finished with them to most efficiently use memory and other resources.
So it seems that my recollection was correct. I do not know what the "degree of user access" for a file is, but that's not the topic of today's post.
So, my point is: the Help File for this function is incomplete or ambiguous at best. Please correct it. And provide a link to the "refnum, file I/O" Help entry in its detailed Help. It would H E L P...
Thanks for reading.Reading in succesive chunks is *NOT* random access. An open file always has
a current position, which is updated with each read or write operation.
You only need to set the file position if you want to start elsewhere.
LabVIEW Champion . Do more with less code and in less time . -
'Position' Button in Table Maintenance Generator
Hi,
i am using 'Position' button to navigate to particular entry in the table in table maintenance generator.
as far as i know this will correctly when we provide 'left part' of key in the pop up provided by position button.
however in my case where i changed the column positions in the table maintenance generator which includes key fields.
does it going to affect 'Position' functionality? because position button is not taking me to correct positions now.
please suggest....Did you change the key field order in the table structure in SE11 or did you manipulate the table maintenance screens by changing the key column order?
In either case, you can regenerate table maintenance by clicking the change button in SE55 and selecting all check boxes. This will correct the issue. However, check if you have any custom events written or modified screens, as those changes will have to be restored after regeneration -
What is the exact use of oracle-xsl-mapper-position in xslt?
Can you please help with some example.
Thanks in advanceoracle-xsl-mapper-position in xslt to find out the position of a node in a loop.
For e.g.
<Array>
<String1></String1>
<String2></String2>
</Array>
Now if we want the position of each node in Array then we use the position() function.
Regards,
Anshul -
XSLT position() not returning sequential values
I'm having trouble with the XSLT position() function. I have the following snippet of XML:
<categories>
<category id="6">
<title>Alumni</title>
</category>
<category id="10">
<title>Built Environment</title>
</category>
<category id="9">
<title>Business</title>
</category>
<category id="81">
<title>Caboolture</title>
</category>
<category id="41">
<title>Corporate</title>
</category>
<category id="2">
<title>Creative Industries</title>
</category>
<category id="61">
<title>Cultural Precinct</title>
</category>
<category id="5">
<title>Education</title>
</category>
<category id="7">
<title>Engineering</title>
</category>
<category id="44">
<title>Feature</title>
</category>
<category id="4">
<title>Health</title>
</category>
<category id="43">
<title>Humanities & Human Services</title>
</category>
<category id="42">
<title>Information Technology</title>
</category>
<category id="8">
<title>Law</title>
</category>
<category id="45">
<title>Profile</title>
</category>
<category id="101">
<title>Public</title>
</category>
<category id="21">
<title>QUT Carseldine</title>
</category>
<category id="1">
<title>Science</title>
</category>
<category id="3">
<title>What's On</title>
</category>
</categories>and the following template to match each category element:
<xsl:template match="category">
<tr>
<td width="10" valign="top" background="graphics/mid_bracket.gif"> </td>
<td width="10" valign="top"><img alt="" width="10" height="15" border="0" src="/graphics/blank.gif" name="rollitem0_{position()}"/></td>
<td width="160"><a href="/general/news-event-list.jsp?news-category-id={@id}" class="level3menu" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('rollitem0_{position()}','','graphics/arrow.gif',1)"><xsl:apply-templates/></a></td>
</tr>
</xsl:template>I would expect the position() function to return 1, 2, 3, 4...19 but it doesn't. It is returning 2, 4, 6, 8...36. Does anyone have any idea why this might be happening? Surely the position should return the position of the current element within its siblings. I can only think that it is counting blank text nodes between each category element. Sorry for the complex markup, I wanted to be sure I was giving a real-world example.
Thanks.Stylesheet:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output method = "text" />
<xsl:template match = "category" >
<xsl:text >
category[</xsl:text>
<xsl:value-of select = "position()" />
<xsl:text >]: </xsl:text>
<xsl:value-of select = "." />
</xsl:template>
</xsl:stylesheet>
produces output:
category[2]: Alumni
category[4]: Built Environment
category[6]: Business
category[8]: Caboolture
category[10]: Corporate
category[12]: Creative Industries
category[14]: Cultural Precinct
category[16]: Education
category[18]: Engineering
category[20]: Feature
category[22]: Health
category[24]: Humanities & Human Services
category[26]: Information Technology
category[28]: Law
category[30]: Profile
category[32]: Public
category[34]: QUT Carseldine
category[36]: Science
category[38]: What's On
stylesheet:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output method = "text" />
<xsl:template match = "/" >
<xsl:apply-templates select = "//category" />
</xsl:template>
<xsl:template match = "category" >
<xsl:text >
category[</xsl:text>
<xsl:value-of select = "position()" />
<xsl:text >]: </xsl:text>
<xsl:value-of select = "." />
</xsl:template>
</xsl:stylesheet>
produces output:
category[1]: Alumni
category[2]: Built Environment
category[3]: Business
category[4]: Caboolture
category[5]: Corporate
category[6]: Creative Industries
category[7]: Cultural Precinct
category[8]: Education
category[9]: Engineering
category[10]: Feature
category[11]: Health
category[12]: Humanities & Human Services
category[13]: Information Technology
category[14]: Law
category[15]: Profile
category[16]: Public
category[17]: QUT Carseldine
category[18]: Science
category[19]: What's On -
Default map setting for Whatsapp 'My position'
I installed Whatsapp on my 9800 torch some weeks ago. In the beginning, the 'My position' function of Whatsapp used Google Maps which I liked and was OK for me.
Some time later, I had some issues with Whatsapp (can't remember what it was) so I un-installed and re-installed it. Since then - or a bit later - the 'My position' function of Whatsapp uses BlackBerry Maps instead of Google Maps - but I prefer Google Maps. I tried to find where the default map application (BlackBerry Maps or Google Maps) can be set for Whatsapp but I couldn't find anything.
So I un-installed (deleted) BlackBerry Maps on my smartphone hoping that Whatsapp would use Google Maps instead, but it didn't... I was now just getting a static map in which the position of the sender is not even marked at all...
I have now re-installed BlackBerry maps from the website - through my device's browser - http://us.blackberry.com/smartphones/features/blackberry_maps.jsp - but though the download and installation seemed to be OK, I can't find the BlackBerry Maps icon on my device anymore and Whatsapp's 'my position' is still showing the static map described above...
Can anyone give me a hint where the default mapping application for Whatsapp can be set to Google Maps?
Best regards, LukasEnter Whatsapp application. When you press the menu button (the one with BlackBerry logo) you can change the configuration of Whatsapp, including the default map application.
-
Hi,
I am using LabVIEW 2009 SP1 on Win XP OS system. I am reading and writing data to a text file whose size does not exceed 50 MB. whenever i try to set file position to a value of say 128 bytes from the start of file, the function does not show an error. But when i try to read back the file position using get file position function, the value shows a very high number. I am not able to do a random access read of the file data. Please help.
Regards,
YashasviHi Yashasvi,
can you post the vi (or vi section) causing the problem?
Thanks,
Marco -
XMLType index supporting position in XPath
I would like to know if it is possible to create index which will support position function in XPath.
For example:
Xpath:
select extractValue(p.pack_content,'/Data/Contractors/Contractor[278]/PermissionNumber')
from packages p;
The table packages is based on the schema and it is created by the statement:
CREATE TABLE packages
(pack_id NUMBER primary key,
pack_content XMLType
XMLTYPE COLUMN pack_content
XMLSCHEMA "http://www.example.com/example" ELEMENT "Data"
VARRAY pack_content."XMLDATA"."Contractors"."Contractor"
STORE AS TABLE pkg_contractors
((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$))
ORGANIZATION INDEX OVERFLOW);
What kind of indexes should I create?
Grzegorz.Just a stupid example to see if it could be done (not that it works);
Does it make any sense ?
No idea if this will work for you, you should further test it
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
5 rows selected.
SQL> create table temp
2 (lclob xmltype)
3 ;
Table created.
SQL> insert into temp
2 values('<itemMaster>
3 <itemNumber>001000222</itemNumber>
4 <itemDesc>HGR REUSE BX FOR HANGERRTNS </itemDesc>
5 <paltSize>1</paltSize>
6 <stdUOM>1</stdUOM>
7 <shflfUOM>1</shflfUOM>
8 <aliases>
9 <upcCode>123456</upcCode>
10 <upcCode>490010002222</upcCode>
11 </aliases>
12 </itemMaster>
13 ')
14 ;
1 row created.
SQL> commit;
Commit complete.
SQL> select extractvalue(lclob,'/itemMaster/aliases/upcCode[position()=2]') from temp;
EXTRACTVALUE(LCLOB,'/ITEMMASTER/ALIASES/UPCCODE[POSITION()=2]')
490010002222
1 row selected.
SQL> set autotrace on
SQL> select extractvalue(lclob,'/itemMaster/aliases/upcCode[position()=2]') from temp;
EXTRACTVALUE(LCLOB,'/ITEMMASTER/ALIASES/UPCCODE[POSITION()=2]')
490010002222
1 row selected.
Execution Plan
Plan hash value: 1896031711
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2002 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TEMP | 1 | 2002 | 3 (0)| 00:00:01 |
Note
- dynamic sampling used for this statement
Statistics
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
476 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> create index pos_idx on temp
2 (extractvalue(lclob,'/itemMaster/aliases/upcCode[position()]'));
Index created.
SQL> select extractvalue(lclob,'/itemMaster/aliases/upcCode[position()=2]') from temp;
EXTRACTVALUE(LCLOB,'/ITEMMASTER/ALIASES/UPCCODE[POSITION()=2]')
490010002222
1 row selected.
Execution Plan
Plan hash value: 1896031711
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2002 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| TEMP | 1 | 2002 | 3 (0)| 00:00:01 |
Note
- dynamic sampling used for this statement
Statistics
19 recursive calls
0 db block gets
19 consistent gets
0 physical reads
0 redo size
476 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> begin dbms_stats.set_table_stats
2 ( ownname => 'MARCO'
3 , tabname => 'TEMP'
4 , numrows => 50000000 , numblks => 1200000 );
5 end;
6 /
PL/SQL procedure successfully completed.
SQL> select extractvalue(lclob,'/itemMaster/aliases/upcCode[position()=1]') from temp;
EXTRACTVALUE(LCLOB,'/ITEMMASTER/ALIASES/UPCCODE[POSITION()=1]')
123456
1 row selected.
Execution Plan
Plan hash value: 1896031711
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 50M| 4768M| 265K (2)| 00:53:04 |
| 1 | TABLE ACCESS FULL| TEMP | 50M| 4768M| 265K (2)| 00:53:04 |
Statistics
8 recursive calls
0 db block gets
9 consistent gets
0 physical reads
0 redo size
470 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedMessage was edited by:
mgralike
Maybe you are looking for
-
Can't launch Cisco Configuration Professional on Windows Vista x64
The Help is necessary to resole the issue (see subject). Tech enveronment Windows Vista x64 Adobe Reader X ver. 10.1.0 (Russian) Cisco Configuration Professional 2.5 JRE 6 update 27 JRE 6 update 27 (64-bit) Internet Explorer 9.0.8112.16421IS While la
-
Inserting summary value in a ZTABLE
Hi Experts, Please guide me on how the following: I have created a Ztable into which i want to upload the Stock in a summary format i.e. i have got the above values in an internal table. now i want to insert the sum of results into another internal t
-
Use thrid-party library in EJB
Hello, In an EAR file, it contains WAR, JAR(ejb). If the ejb JAR file required other Java library(JAR files), is it possible to deploy with the EAR ?? For example, I want to use Jakarta Lucene in on eof my EJB. I tried to add <module><java>lucene.jar
-
IOS7 causing website using Google Maps API to crash
Browsing websites that use the Google Maps API cause the browser to crash since upgrading to IOS7. This wasn't the case with IOS5 or 6. This is a known issue on the Google Code forums to do with the way IOS7 handles memory usage. (https://code.google
-
Safari 4 UI is way too dark, can't read bookmarks bar :(
Hi guys, I have an issue with Safari UI. It's just way, way too dark for me. Bookmarks bar is especially hard for me to read. Why is Apple using a dark gray background and black text? It's incredibly hard to read. I don't have vision issues (I have 2