How to loop through columns selected by select clause
Hi,
I am having a select statement which is generated dynamically and the columns within it are also generated dynamically.
Select col1, col2, col3 from table1 where rowid = 'xxxx'
This will return a single row and columns within it, now i want to loop through the column values and store in it varray and return it.
Can somebody please show me how can i do this.
Thanks!
Hi,
Thanks for replying.
Your solution works but my question is will it work if i try to do this dynamically.
I do have the count and names of the columns which are generated dynamically, i have the datatype for the corresponding columns also, the only problem which i faced is getting the values of these columns into something.
I am able to run the following sql like this:
szSqlStr := 'Select DISCOVERYHOSTNAME, DISCOVERYMACPRIMARYPHYSICAL, DISCOVERYSERIALNUMBER
from ALT_42_Consolidated where rowid = ''AAEWNEABXAAAAkxAAA''';
Execute immediate szSqlStr into nVal_Array(1), nVal_Array(2), nVal_Array(3);
I am generating this string also :
nVal_Array(1), nVal_Array(2), nVal_Array(3)
But i can't use it in execute immediate statement.
Can you please throw some light on genearing the variable for the into clause in teh above execute immediate statement. I am having the count of columns.
Yesterday I posted a question and its link is here:
How to execute dynamic sql
Thanks for your reply.
PS: What is YMMV
Similar Messages
-
How to loop through columns of a table?
Hi, guys
Is there a way to loop through each column of a table? If there is a way, then how?
I have a table with columns of different datatypes , and I want to set default values for each column with a loop but don't know how to make it happen.
For example,
Table: Employees
declare
rec Employees%ROWTYPE;
begin
for col in rec.empno .. rec.location loop
if col = rec.empno then -- set default value for column empno;
end loop;
end;
/Sorry, I am a newbie to PL/SQL. Please help!
Thanks in advance.
Edited by: HappyJay on 2010/05/11 10:36Hi,
You can query the data dictionary views all_tab_columns (or user_tab_columns) to get the names of all the columns in a particular table.
Here's an easy way (but not a very efficient way) to loop through them:
SET SERVEROUTPUT ON
BEGIN
FOR c IN ( SELECT column_name
FROM all_tab_columns
WHERE owner = 'SCOTT' -- Remember ot use UPPER CASE inside quotes
AND table_name = 'EMP'
LOOP
dbms_output.put_line (c.column_name || ' = column_name inside loop');
END LOOP;
END;
/I'm confused about what you want to do, though.
Do you want the PL/SQL code to write and/or execute an ALTER TABLE command for each column? -
How to Loop through another list and update a column with SharePoint Designer 2013 Workflow
Hi,
I am trying to get my head around the new 2013 Workflow Engine and SharePoint Designer 2013 Workflow Text-Based Designer.
I have two lists.
List A has 2 columns: Title, Completed (Yes/No)
List B has 3 columns: Title, LookupListATitle, Completed (Yes/No)
All the 2013 Workflow components have been installed and configured and I am selecting the 2013 Workflow option in SPD
I am trying to set off a 2013 Workflow when an item in List A is edited to Loop through List B and select items where the LookupListATitle column's value is equal to the Title value of the current item, and set the value of the Completed column for those
items in ListB to "Yes".
I have the Workflow configured like this:
Stage: Stage 1
IF Current Item:Completed equals Yes
Loop: 1
The contents of this loop will run repeatedly while: ListB:LookupListATitle equals Current Item: Title
Update item in ListB.
(The dialog options for the update item action as follows:
List: ListB
Field: Completed, Value: Yes
In the Find the List Item section
Field: LookupListATitle
Value: Current Item: Title)
Transition to stage
Go to End of Workflow
When I update an item in ListA and set its Completed column to Yes, I would expect the Workflow to find all the items in List B where the Lookup column is equal to ListA's Title (there are 2) and update their Completed column to Yes. But it doesn't work.
When I look at the Workflow Status it says the Internal Status is "Canceled" and the information pop up has the following alien language (and may be truncated):
RequestorId: 95f03b62-8956-ac14-c5cf-dc98c89c589c. Details: System.ArgumentException: Invalid JSON primitive: Item001. Parameter name: value at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ConvertStringToJsonNumber(String value) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.ReadPrimitive(String
type, XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(XmlDictionaryReader jsonReader) at Microsoft.Workflow.Common.Json.JXmlToJsonValueConverter.JXMLToJsonValue(Stream jsonStream, Byte[] jsonBytes)
at Microsoft.Activities.DynamicValue.ParseJson(String json) at System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor
executor, BookmarkManager bookmarkManager, Location resultLocation)
Unfortunately I don't have access to the server, logs etc.
I would love to find some tutorials, or any books on SharePoint Designer 2013 in general and Workflows in particular but my searches haven't turned up much so far apart from a pre-release Beginning SharePoint Workflows which is in its very early stages and
not much help yet.
Can anyone give me some guidance on how to set up While Loops to iterate through a related list using SharePoint Designer 2013?
MarkHi,
I understand that you wanted to update the items in the other list (Participants) where the Course equals the Current Item.
You need to use “Call HTTP Web Service" action and “Build Dictionary" action to get the Maxid and then loop Participants to update the items.
You can follow the steps as below to achieve what you want:
Create a custom list named Courses, add columns: Title(Single line of text), Course ID(Single line of text), Course Finalised (Yes/No).
Create a custom list named Participants, add columns: Title(Single line of text), Course(Lookup), CourseFinalised (Yes/No).
Create workflow associated to Courses, start the workflow automatically when an item is created or changed.
Add conditions and actions:
The HTTP URL is set to
https://sitename/_api/web/lists/GetByTitle('listname')/items?$orderby=Id%20desc and the HTTP method is set to “GET”. Then the list will be order by Id and desc.
Then if Course Finalised is equal to Yes, the CourseFinalised of the associated items in Participants will be updated to Yes.
More information:
http://sergeluca.wordpress.com/2013/04/09/calling-the-sharepoint-2013-rest-api-from-a-sharepoint-designer-workflow/
Thank you for your understanding.
Best Regards,
Linda Li
Linda Li
TechNet Community Support -
How to loop through a collection of records which is return value of func.
Hi all.
Have this situation:
- Stored function (member of pkg procedure) that returns a collection of records.
Package Spec:
=========
type tipo_pvt is table of s08_plan_venta_totalizado_r % rowtype;
rc_pvt tipo_pvt;
(s08_plan_venta_totalizado_r is a view).
Package Body:
=========
select col1
,col2
,etc
bulk collect into rc_pvt
from s08_lista_precio_producto_r lpp
,s03_producto_r prd
where condition;
return rc_pvt;
Once collection is loaded and returned (i know it loads records). I just want to loop through every record on a pl/sql procedure on the client (forms6i procedure), but it gives me the error: ORA-06531 Reference to uninitialized collection:
On the forms6i client procedure i have something like:
procedure p_carga_plan_venta_inv (p_id_plan_venta in number) is
v_contador integer;
v_mensaje varchar2(10);
rc_pvt sk08_gestiona_plan_venta.tipo_pvt; (sk08_gestiona_plan_venta is package name)
begin
rc_pvt := sk08_gestiona_plan_venta.tipo_pvt();
rc_pvt := sk08_gestiona_plan_venta.f_genera_plan_venta_inv (:pvv.lip_id_lista_precio
,:pvv.ems_id_sucursal
,:control4.v_metodo_calculo
,:pvv.unm_co_unidad_monetaria
,:pvp.fe_fin_periodo) ;
-- previous statement dos not fail BUT THIS:
message('rc_pvt.count= '||rc_pvt.count);pause;
DOES FAIL
end;
So my question is : since i have already returned the collection, how come is not initialized....?
Do i have to extend it first? In this case i have to return the number of records in the collection.....
Look what happen when done from sqlplus:
declare
rc_pvt sk08_gestiona_plan_venta.tipo_pvt;
begin
rc_pvt := sk08_gestiona_plan_venta.tipo_pvt();
rc_pvt :=
sk08_gestiona_plan_venta.f_genera_plan_venta_inv (8713171
,null
,'m'
,'BS.F'
,to_date('28/02/2001','dd/mm/yyyy'));
end;
SQL> /
Registros en la coleccion =6
Procedimiento PL/SQL finalizado con éxito.
SQL>
I put a dbms_output.put_line on stored function .....
Please help ....!
Apparently it fails when calling the stored function:
rc_pvt := sk08_gestiona_plan_venta.f_genera_plan_venta_inv (:pvv.lip_id_lista_precio
,:pvv.ems_id_sucursal
,:control4.v_metodo_calculo
,:pvv.unm_co_unidad_monetaria
,:pvp.fe_fin_periodo) ;
I don't undestand since this function return the appropiate type. It seems the collection is empty, although having test that on sqlplus works ...
rc_pvt := sk08_gestiona_plan_venta.f_genera_plan_venta_inv (:pvv.lip_id_lista_precio
,:pvv.ems_id_sucursal
,:control4.v_metodo_calculo
,:pvv.unm_co_unidad_monetaria
,:pvp.fe_fin_periodo) ;
function f_genera_plan_venta_inv (p_id_lista_precio in number
,p_id_sucursal in number
,p_tipo_nivel_inv in varchar2
,p_co_unidad_monetaria in varchar2
,p_fe_fin_periodo in date) return tipo_pvt;
for some reason it works on plus:
SQL> declare
2 rc_pvt sk08_gestiona_plan_venta.tipo_pvt;
3 begin
4 rc_pvt := sk08_gestiona_plan_venta.tipo_pvt();
5 rc_pvt :=
6 sk08_gestiona_plan_venta.f_genera_plan_venta_inv (8713171
7 ,null
8 ,'m'
9 ,'BS.F'
10 ,to_date('28/02/2001','dd/mm/yyyy'));
11 --
12 dbms_output.put_line('Registros en la coleccion = '||rc_pvt.count);
13 for i in 1 .. rc_pvt.count loop
14 --
15 dbms_output.put_line('En '||i||rc_pvt(i).prd_co_producto);
16 end loop;
17 end;
18 /
Registros en la coleccion =6
Registros en la coleccion = 6
En 1PT.REF.PET.KO05
En 2PT.REF.PET.LM15
En 3PT.ALM.VDR.001
En 4PT.REF.GRN.CN
En 5PT.REF.GRN.KO
En 6PT.REF.GRN.LM
Procedimiento PL/SQL finalizado con éxito.
Don't understand why it works on plus8 (same version that comes with 6i).
Can't loop through records on forms...? WHY ...?
Edited by: myluism on 02-abr-2012 14:40Forms 6i is an antique ... write your code to run on the server.
Multiple examples of how to loop through an array loaded with bulk collect can be found here.
http://www.morganslibrary.org/reference/array_processing.html
The main library page is:
http://www.morganslibrary.org/library.html -
How to loop through Multiple Excel sheets and load them into a SQL Table?
Hi ,
I am having 1 excel sheet with 3 worksheet.
I have configured using For each loop container and ADO.net rowset enumerator.
Every thing is fine, but after running my package I am getting below error
[Excel Source [1]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0202009. There may
be error messages posted before this with more information on why the AcquireConnection method call failed.
Warning: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (5) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified
in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
[Connection manager "Excel Connection Manager"] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft Access Database Engine" Hresult: 0x80004005 Description: "The Microsoft Access database engine cannot open or write to the file ''. It is already opened exclusively by
another user, or you need permission to view and write its data.".
Pleas suggest me the correct way of solving above issues.
Thanks in advance :)
regards,
Vipin jha
Thankx & regards, Vipin jha MCPHi ,
Please refer the below link for Looping multiple worksheet in a single SQL Table.
http://www.singhvikash.in/2012/11/ssis-how-to-loop-through-multiple-excel.html
Note:-If you using excel 2010 then you have to use EXCEL 12.0 .
Above link explaining step by step of Looping multiple worksheet in a single SQL Table.
regards,
Vipin jha
Thankx & regards, Vipin jha MCP -
How to loop through a single row of data?
What I'm trying to do is use a cursor to loop through a clob. When I create my cursor I get the an error telling me that the table does not exist. Which implies that I have an implicit cursor. Is there a way to get around this?
> How to loop through a single row of data?
By not looping as there is only a single row?
> What I'm trying to do is use a cursor to loop through a clob
Processing (looping through) a CLOB has nothing to do with a cursor.
> When I create my cursor I get the an error telling me that the table does
not exist. Which implies that I have an implicit cursor.
Incorrect. It simply means that
a) you do not have permissions to access that table from within the current context
b) it does not exist (e.g. you have misspelled the object name, you have not qualified it properly within the current scope, etc) -
How To Loop Through GregorianCalendar ?
I wonder if anyone knows how to loop through GregorianCalendar , such as :
GregorianCalendar Start_Date,End_Date;
Start_Date=new GregorianCalendar(2000,Calendar.DECEMBER,25);
End_Date=new GregorianCalendar(2006,Calendar.DECEMBER,25);
for ( GregorianCalendar Day_Index=Start_Date ; Day_Index<End_Date ; Day_Index++ )
Thanks
Frankfor ( GregorianCalendar Day_Index=Start_Date ;
Day_Index<End_Date ; Day_Index++ )
Day_Index.add(Calendar.DATE, 1); -
How to Loop through App and finding popup Windows
Does anyone know how to loop through the app and find any
popup windows..I guess application by default creates a SystemManager
object... So i used
this.systemManager.popUpChildren.numChildren and it gives me
0 all the time.. even though I have instances of windows to the
app.. According to the documentation this should give you the
number of popup children but it doesn't.. Any more ideas? -
How to loop through an associative array
Guys,
How to loop through an associative array. where the key is string but the value is an object
-ThanksIt depends if you are using a Java HashMap or a BPM Associative array. You'd use the "keySet" if for the former and the "keys" if it's the latter.
I know you want an object for the array, but Any[String] is used here just so you can see something coming back in the display statements shown below. Remove the input and display statements - they're just in there so you can see something working.
Here's how to go through a Hashmap's array using a loop:
map as Java.Util.HashMap
map.put(1, "One")
map.put(2, "Two")
map.put(3, "Three")
map.put(4, "Four")
map.put(5, "Five")
display map.keySet
for each item in keySet(map) do
display item
display get(map, arg1 : item)
endHere's how to go through an associative array using a loop:
hashMap as Any[String]
hashMap = ["One": 1,"Two":2]
for each item in hashMap.keys do
display item
display "Item in the array is: " + hashMap[item]
endDan -
How to loop through a KM Folder ?
Hi ....can someone please let me know how to loop through a KM Folder having many documents , files etc .
Waiting for replies !!
Regards
SmitaHi Smita
Here is the code:
String rLocationtest = "/documents/Folder1";
IResourceContext c = ResourceFactory.getInstance().getServiceContext("cmadmin_service");
ICollection collection = (ICollection)ResourceFactory.getInstance().getResource(RID.getRID(rLocationtest),c);
loopFolder(collection,c);
public void loopFolder(ICollection collection, IResourceContext c){
try{
IResourceList resList = collection.getChildren();
IResourceListIterator resItr = resList.listIterator();
while(resItr.hasNext()){
IResource restemp = resItr.next();
if(restemp.isCollection() && LinkType.NONE.equals(restemp.getLinkType())){
loopFolder((ICollection)restemp,c);
//If the restemp is not a collection, it is a resource.
//Do the resource related operations here.
}// End of while
}catch(Exception e){
e.printStackTrace();
}//End of loopFolder
Hope it helps
Thanks
Deepak -
Looping through results of a Select through a DB adapter
I am selecting an unknown number of rows from a database through the DB adapter into my process. When I get these results I need to loop through them, but the examples I have seen require an attribute to define each row for the loop to work . My result set is not giving me an attribute and I do not see how to define one in the wizard used to define the adapter.
Is there a way to assign an attribute to each row automatically as it comes out or after the fact? Or is there another way to attack this problem that I do not see?
Thank you in advance for the help.
--Mikeyou can take the results payload and loop thru with the while statement, then you can iterate thru each result and doing whatever you need to. Just make a counter variable of type int and count the number of records in the payload, then initialize a iterator varible on int and set to 0.
then just loops thru the payload and add +1 to iterator until it reaches the count number. This allows you to hit each records one by one, and do any kind of analysis on the current record set. -
How to loop through xmldom.getNextSibling?
Hello,
I have been working with an example that Steve provided me with that uses xpath to pull the value of a specific node from an xml doc. This works fine as long as there is only one node, I would like to use getNextSibling to loop through all the values that exist for that node in the document. I am pasting in the code I am working with. I know I need to use the getNextSibling but am unsure of where I should loop. I left some commented stuff in there to illustrate some of the directions that I wanted to go, I will be writing the results to a nested table. Any assistance greatly appreciated.
Thanks,
Travis
PROCEDURE testit (dummy in varchar2 default null) IS
-- dummy will be xml doc passed in when this goes live
xml varchar2(32000) := '<?xml version="1.0"?>
<Pip3A2PriceAndAvailabilityQuery>
<ProductPriceAndAvailabilityQuery>
<ProductPriceAndAvailability>
<ProductLineItem>
<ProductQuantity>0</ProductQuantity>
<productUnit>
<ProductPackageDescription>
<ProductDescription>
<GlobalProductIdentifier>A00012</GlobalProductIdentifier>
</ProductDescription>
</ProductPackageDescription>
</productUnit>
<requestedPrice>
<FinancialAmount>
<GlobalCurrencyCode>USD</GlobalCurrencyCode>
</FinancialAmount>
</requestedPrice>
</ProductLineItem>
<ProductLineItem>
<ProductQuantity>0</ProductQuantity>
<productUnit>
<ProductPackageDescription>
<ProductDescription>
<GlobalProductIdentifier>A00018</GlobalProductIdentifier>
</ProductDescription>
</ProductPackageDescription>
</productUnit>
<requestedPrice>
<FinancialAmount>
<GlobalCurrencyCode>USD</GlobalCurrencyCode>
</FinancialAmount>
</requestedPrice>
</ProductLineItem>
</ProductPriceAndAvailability>
</ProductPriceAndAvailabilityQuery>
<fromRole>
<PartnerRoleDescription>
<GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
<PartnerDescription>
<GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
<BusinessDescription>
<GlobalBusinessIdentifier>00031583</GlobalBusinessIdentifier>
<GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
</BusinessDescription>
</PartnerDescription>
</PartnerRoleDescription>
</fromRole>
<toRole>
<PartnerRoleDescription>
<GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
<PartnerDescription>
<GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
<BusinessDescription>
<GlobalBusinessIdentifier/>
<GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
</BusinessDescription>
</PartnerDescription>
</PartnerRoleDescription>
</toRole>
<thisDocumentGenerationDateTime>
<DateTimeStamp>20000229T140102.333Z</DateTimeStamp>
</thisDocumentGenerationDateTime>
<thisDocumentIdentifier>
<ProprietaryDocumentIdentifier>Panda20000229T140102.333Z</ProprietaryDocumentIdentifier>
</thisDocumentIdentifier>
<GlobalDocumentFunctionCode>request</GlobalDocumentFunctionCode>
</Pip3A2PriceAndAvailabilityQuery>
v_counter number := 1;
partno varchar2(25) := 'IM NOT NULL';
quantity varchar2(10);
custid varchar2(25);
conpart varchar2(50);
p xmlparser.parser;
xd xmldom.DOMDocument;
-- Variables for the pricing call
in_caller_name varchar2(50) := 'xsourcer';
in_commit_allow_flag varchar2(50) := NULL;
in_customer_no number;
in_part_no_arg varchar2(50);
in_mfg_arg varchar2(50) := NULL;
in_cat_arg varchar2(50) := NULL;
in_sub_arg varchar2(50) := NULL;
in_opt_arg varchar2(50) := NULL;
out_price n umber;
out_prior_var number;
out_ret_val varchar2(50);
out_success_code number;
out_error_code number;
out_error_message varchar2(500);
v_partlist partlist;
-- This function converts the GlobalProductIdentifier (Manufacturer Part Number)
-- to an elcom part number by performing a query against the dfp_parts table
-- I created a local table with a few manufacturer part no's and elcom part no's
function valueOf(xd xmldom.DOMDocument, xpath VARCHAR2) return varchar2 is
n xmldom.DOMNode;
nl xmldom.DOMNodeList;
e xmldom.DOMElement;
begin
-- Cast the document to a node
n := xmldom.makenode(xd);
-- Select Nodes Matching XPath Pattern
nl := xslprocessor.selectNodes(n,xpath);
IF xmldom.getLength(nl) > 0
THEN
e := xmldom.makeElement(xmldom.item(nl,0));
xmldom.normalize(e);
RETURN ltrim(rtrim(xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nl,1)))));
END IF;
end;
begin
-- New Parser
p := xmlparser.newparser;
-- Parse the XML document
xmlparser.parseBuffer(p,xml);
-- Get the XML document that's been parsed
xd := xmlparser.getdocument(p);
custid := valueof(xd,'//GlobalBusinessIdentifier');
insert into xrequest values (44, custid,null,sysdate);
in_customer_no := to_number(custid);
-- Calls to the xpath function to get the tags we want the value of
/* FOR v_count IN 1..
xd.length LOOP
getNextSibling() RETURN DOMNode;
WHILE (PARTNO IS NOT NULL) LOOP
partno := valueof(xd,'//GlobalProductIdentifier');
in_part_no_arg := partno;
v_counter := v_counter + 1;
-- call pricing here pass in custid, partno
-- assign outprice_var to price of nested table
corp_get_price_sp(in_caller_name, in_commit_allow_flag, in_customer_no,
in_part_no_arg, in_mfg_arg, in_cat_arg, in_sub_arg,
in_opt_arg, out_price, out_prior_var, out_ret_val,
out_success_code, out_error_code, out_error_message);
IF V_COUNTER = 100 THEN
HTP.P('EXIT OUT');
EXIT;
END IF;
--XREQUEST.PART_NO := PARTNO;
--XREQUEST.PRICE := OUT_PRICE_VAR;
htp.p(out_price);
htp.br;
-- insert into xrequest values (44, custid,(Partlist(PartObj(partno, out_price, null, null, null, null)))sysdate);
END LOOP;
quantity := valueof(xd,'//ProductQuantity');
end;
nullYou can first create a databank with the Input values and associated navigation. For eg. Navigation,csv will have
Input, Navigation
Hardware, window(index=0).link(text="Hardware" | href="http://..." | index=28)
Monitors,
Record the script by selecting from the dropdown box and then going to the resulting page. Attach the databank to the script and use the databank to select the Input value for the dropdown on the page. On the Resulting Page add code to the PageBeforePlay method -
dim strNav as string
'get the navigation value from the databank
RSWApp.GetDataBankValue "Navigation", strNav
rswapp.ChangeNavigation "", strNav, , , False
The resulting page will then be the page that the navigation is changed to.
You can loop through all the records in the databank to check the navigation for all of them.
You will also have to look at how the value is set in the dropdown, as an Index or the actual value. If it is by Index, then in the databank file, change the Input to be the number of the selection like 1 or 2.
Hope the above is what you are looking for.
Question - The resulting page for each navigation will be different. How are you going to verfiy the different pages or continue on in the script?
Message was edited by: mpalivela -
How to loop through SYS_REF cursor records
Hello, I'm using the following oracle version
PL/SQL Release 11.2.0.2.0 - Production
I'd like to create an Oracle anonymous block which calls another procedureB. ProcedureB returns the result of a query in the form of a SYS_REF cursor. Once the result is returned into the anonymous block, I'd like to loop through specific columns of the result set. I've started with this, but it isn't right. Could you please let me know what I'm doing wrongly?
create or replace procedure procedureRFHA(numIn IN number, cursorOUT OUT sys_refcursor) as
begin
open cursorOUT for
select 'A' col1, 'B' col2
from dual
where 3 = numIn
union all
select 'C' col1, 'D' col2
from dual
where 3 = numIn;
end;
declare
TYPE r_type IS RECORD (
col1 VARCHAR2 (1),
col2 VARCHAR2 (1)
returnCursor sys_refcursor;
begin
procedureRFHA(3, returnCursor);
LOOP
FETCH returnCursor INTO r_type;
dbms_output.put_line(r_type.col1);
EXIT WHEN returnCursor%NOTFOUND;
END LOOP;
CLOSE returnCursor;
end;Then please mark the question ANSWERED.
-
How to loop through XML data in a table of XMLType?
Hi,
I am failry new to xml document processing in Oracle using PL/SQL.
My DB version: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
I have successfully loaded an xml document into a table using the following two statements:
1) CREATE TABLE mytable2 OF XMLType;
2) INSERT INTO mytable2 VALUES (XMLType(bfilename('IMAGE_FILE_LOC', 'IFTDISB20100330172157C002.xml'), nls_charset_id('AL32UTF8')));
Now I need to traverse through the various nodes within the xml document and extract values of elements of each node. The question I have is:
How do I loop through a node? A VALID record is enclosed within the <checkItem> </checkItem> tags.
Here is a snippet of the data in that xml document:
++++++++++++++++++++++++++++++++++++++++++++++++
<?xml version="1.0" encoding="UTF-8"?>
<bdiData>
<documentControlInfo>
<documentInfo>
<docDescription>Check images and data for Test Company, account number 1234567890</docDescription>
<docID>
<ID>20100330172157</ID>
</docID>
<docModifier>Test Company</docModifier>
<docCreateDate>2010-03-30</docCreateDate>
<docCreateTime>17:21:57-0700</docCreateTime>
<standardVersion>1.0</standardVersion>
<testIndicator>0</testIndicator>
<resendIndicator>0</resendIndicator>
</documentInfo>
<sourceInfo>
<sourceName>The Bank IFT</sourceName>
<sourceID>
<idOther>TheBankIFT</idOther>
</sourceID>
</sourceInfo>
<destinationInfo>
<destinationName>Test Company</destinationName>
<destinationID>
<idOther>FEI3592</idOther>
</destinationID>
</destinationInfo>
</documentControlInfo>
<checkItemCollection>
<collectionInfo>
<description>Items</description>
<ID>1269994919135</ID>
<Classification>
<classification>Items</classification>
</Classification>
</collectionInfo>
<checkItemBatch>
<checkItemBatchInfo>
<description>Paid Checks</description>
<ID>1269994919135</ID>
<Classification>
<classification>Paid Checks</classification>
</Classification>
</checkItemBatchInfo>
<checkItem>
<checkItemType>check</checkItemType>
<checkAmount>86468</checkAmount>
<postingInfo>
<date>2010-03-29</date>
<RT>10700543</RT>
<accountNumber>1234567890</accountNumber>
<seqNum>009906631032</seqNum>
<trancode>001051</trancode>
<amount>86468</amount>
<serialNumber>300040647</serialNumber>
</postingInfo>
<totalImageViewsDelivered>2</totalImageViewsDelivered>
<imageView>
<imageIndicator>Actual Item Image Present</imageIndicator>
<imageViewInfo>
<Format>
<Baseline>TIF</Baseline>
</Format>
<Compression>
<Baseline>CCITT</Baseline>
</Compression>
<ViewSide>Front</ViewSide>
<imageViewLocator>
<imageRefKey>201003260000738400851844567205_Front.TIF</imageRefKey>
<imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
</imageViewLocator>
</imageViewInfo>
<imageViewInfo>
<Format>
<Baseline>TIF</Baseline>
</Format>
<Compression>
<Baseline>CCITT</Baseline>
</Compression>
<ViewSide>Rear</ViewSide>
<imageViewLocator>
<imageRefKey>201003260000738400851844567205_Rear.TIF</imageRefKey>
<imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
</imageViewLocator>
</imageViewInfo>
</imageView>
</checkItem>
<checkItem>
<checkItemType>check</checkItemType>
<checkAmount>045</checkAmount>
<postingInfo>
<date>2010-03-29</date>
<RT>10700543</RT>
<accountNumber>1234567890</accountNumber>
<seqNum>008518967429</seqNum>
<trancode>001051</trancode>
<amount>045</amount>
<serialNumber>200244935</serialNumber>
</postingInfo>
<totalImageViewsDelivered>2</totalImageViewsDelivered>
<imageView>
<imageIndicator>Actual Item Image Present</imageIndicator>
<imageViewInfo>
<Format>
<Baseline>TIF</Baseline>
</Format>
<Compression>
<Baseline>CCITT</Baseline>
</Compression>
<ViewSide>Front</ViewSide>
<imageViewLocator>
<imageRefKey>201003290000713900851896742901_Front.TIF</imageRefKey>
<imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
</imageViewLocator>
</imageViewInfo>
<imageViewInfo>
<Format>
<Baseline>TIF</Baseline>
</Format>
<Compression>
<Baseline>CCITT</Baseline>
</Compression>
<ViewSide>Rear</ViewSide>
<imageViewLocator>
<imageRefKey>201003290000713900851896742901_Rear.TIF</imageRefKey>
<imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
</imageViewLocator>
</imageViewInfo>
</imageView>
</checkItem>
<checkItemBatchSummary>
<totalItemCount>1028</totalItemCount>
<totalBatchAmount>61370501</totalBatchAmount>
<totalBatchImageViewsDelivered>2056</totalBatchImageViewsDelivered>
</checkItemBatchSummary>
</checkItemBatch>
<collectionSummary>
<totalBatchCount>1</totalBatchCount>
<totalItemCount>1028</totalItemCount>
<totalCollectionAmount>61370501</totalCollectionAmount>
<totalCollectionImageViewsDelivered>2056</totalCollectionImageViewsDelivered>
</collectionSummary>
</checkItemCollection>
<documentSummaryInfo>
<totalCollectionCount>1</totalCollectionCount>
<totalBatchCount>1</totalBatchCount>
<totalItemCount>1028</totalItemCount>
<totalDocumentAmount>61370501</totalDocumentAmount>
<totalDocumentImageViewsDelivered>2056</totalDocumentImageViewsDelivered>
</documentSummaryInfo>
</bdiData>
++++++++++++++++++++++++++++++++++++++++++++++++
Any ideas and or suggestions will be greatly appreciated.
Cheers!
Edited by: user12021655 on Aug 3, 2010 1:25 PMI really need to update my blog to get the example you are looking for posted. I did a quick search on the forums for XMLTable and found a good example at {message:id=4325701}. You will want to use OBJECT_VALUE in the PASSING clause where you need to reference the column in your table.
Note: See the FAQ in the upper right for how to use the tag to wrap objects to retain formatting. Also your XML is missing closing nodes. -
Hi,
I want to loop through each column of a CSV file.
And while looping each column, I want to loop each row
starting with the 2st row.
I wrote the code as below, but it is looping through the rows
starting from row 1.
How do I make it start the loop as from row 2 in the CSV ?
(see code below)
Can someone tell me how to do this?
Thx
<!--- get and read the CSV-TXT file --->
<cffile action="read" file="C:\Documents and
Settings\user\Desktop\EM-CSV\test.csv" variable="csvfile">
<!--- loop through the CSV-TXT file on line breaks and
insert into database --->
<table border="1">
<cfloop index="index" list="#csvfile#"
delimiters="#chr(10)##chr(13)#">
<!--- <cfoutput>#listgetAt('#index#',1,
',')#</cfoutput><br> --->
<tr>
<td><cfoutput>#index#</cfoutput></td>
<td><cfoutput>#listgetAt('#index#',2,
',')#</cfoutput></td>
<td><cfoutput>#listgetAt('#index#',3,
',')#</cfoutput></td>
</tr>
</cfloop>
</table>Hello, your code works perfectly.
Now I am having a slight problem with it.
I have added the code to check whether a particular cell of
the CSV is blank. (see code below)
But it is giving me error message.
Can you please tell me what am doing wrong?
Thx
<!--- loop through the CSV-TXT file on line breaks and
insert into database --->
<cfset isRowTwoOrLater=false>
<table border="1">
<cfloop index="row" list="#csvfile#"
delimiters="#chr(10)##chr(13)#">
<cfif isRowTwoOrLater>
<tr>
<cfif #listgetAt(row,1, ',')# neq ''> <!--- I HAVE
ADDED THIS PART TO CHECK WHETHER IT IS BLANK --->
<td><cfoutput>#listgetAt(row,1,
',')#</cfoutput></td>
<cfelse>
<td><cfoutput>It is
blank</cfoutput></td>
</cfif>
<td><cfoutput>#listgetAt(row,2,
',')#</cfoutput></td>
<td><cfoutput>#listgetAt(row,3,
',')#</cfoutput></td>
</tr>
<cfelse>
<cfset isRowTwoOrLater = true>
</cfif>
</cfloop>
</table>
Maybe you are looking for
-
I have a brand new ipad with iOS 6.1.3 and an imac with OS 10.5.8. I cannot update my OS on this machine, but want to sync the new ipad. What can I do?
-
Deauthorized all computers from my account. Which now I think I should have not done!! I reauthorized mine only BUT now I can no longer play any new songs purchased without it asking me to authorize my computer?? When I authorize it tell me my com
-
Excel 2010 - Multiple Digital Signatures?
How would you add multiple digital signatures to an Excel 2010 workbook?
-
Lost my page options in Leopard
I have an HP deskjet 960c. Since I installed Leopard I've no page options. It prints but I can't open and preview Adobe docs nor any other Word doc. I've reinstalled the printer files but no joy. Any idea?
-
Material Component to Network - BAPI_NETWORK_COMP_ADD
hi, has anyone come across this SAP problem? I use BAPI_NETWORK_COMP_ADD to add a material to a Network. It adds fine, and shows up in CJ20N. However, if you go to the Plan/Actual Cost (CN41), there is no cost associated. Okay. I used BAPI_NETWORK_CO