Convert cursor to row object
I have a pipeline function as
row_t AS OBJECT(...);
table_t IS TABLE OF row_t
func_a RETURN table_t PIPELINED AS ...
And another function which will take row_t as parameter:
func_b(row_in row_t)
Now, in a procedure, I would like to pass each row from pipeline function to func_b
FOR c IN (SELECT * FROM TABLE(func_a())) LOOP
-- The following code gives compilation error,
-- How do I convert c to row_t type???
some_var := func_b(c);
END LOOP;
Any suggestion? Thanks all in advance!
d9a7751a-2a6b-4393-b966-ca55209f77d3 wrote:
I have a pipeline function as
row_t AS OBJECT(...);
table_t IS TABLE OF row_t
func_a RETURN table_t PIPELINED AS ...
And another function which will take row_t as parameter:
func_b(row_in row_t)
Now, in a procedure, I would like to pass each row from pipeline function to func_b
FOR c IN (SELECT * FROM TABLE(func_a())) LOOP
-- The following code gives compilation error,
-- How do I convert c to row_t type???
some_var := func_b(c);
END LOOP;
Any suggestion? Thanks all in advance!
Doesn't seem like a very "smart" idea to loop through the pipelined function and call func_b. Why not just incorporate the pipelined function directly in to func_b ?
Aside from that, I think all you need to do is reference the value in your current cursor, you selected * from the pipelined function so the column should be COLUMN_VALUE by default. So you would pass c.column_value ... not 100% sure if that'll work. If you would have posted a small and simple piece of code I could run on my Oracle instance I'd give you a definitive answer
Cheers,
Similar Messages
-
Convert columns to row equivalent to stragg function in oracle sql
Hi,
Sorry i forgot my Oracle version :
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for 64-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - ProductionI searched in google but i didn't found the solution.
I looking for a function in discoverer equivalent to stragg sql function.
Note : stragg function convert columns to rows.
Thanks
SELECT deptno, stragg ('-' || ename)
FROM emp_test
GROUP BY deptno;
DEPTNO STRAGG_STR
10 -CLARK-KING-MILLER
20 -SMITH-FORD-ADAMS-SCOTT-JONES
30 -ALLEN-BLAKE-MARTIN-TURNER-JAMES-WARD
3 rows selected.Edited by: Salim Chelabi on 2010-01-29 08:32Hi again,
*1- I created my function in my schema.*
CREATE OR REPLACE TYPE t_string_agg AS OBJECT
g_string VARCHAR2(32767),
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER
SHOW ERRORS
CREATE OR REPLACE TYPE BODY t_string_agg IS
STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
RETURN NUMBER IS
BEGIN
sctx := t_string_agg(NULL);
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
value IN VARCHAR2 )
RETURN NUMBER IS
BEGIN
SELF.g_string := self.g_string || ',' || value;
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
returnValue OUT VARCHAR2,
flags IN NUMBER)
RETURN NUMBER IS
BEGIN
returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
RETURN ODCIConst.Success;
END;
MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
ctx2 IN t_string_agg)
RETURN NUMBER IS
BEGIN
SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
RETURN ODCIConst.Success;
END;
END;
SHOW ERRORS
CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)
RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING t_string_agg;
SHOW ERRORS
*2- I ran my query in my schema with sqlplus.*
SELECT deptno,ename,sal, string_agg(ename)over(partition by deptno) AS employees
FROM emp_test
order by deptno;
DEPTNO ENAME SAL EMPLOYEES
10 CLARK 2450 CLARK,KING,MILLER
10 KING 5000 CLARK,KING,MILLER
10 MILLER 1300 CLARK,KING,MILLER
20 JONES 2975 JONES,FORD,ADAMS,SMITH,SCOTT
20 FORD 3000 JONES,FORD,ADAMS,SMITH,SCOTT
20 ADAMS 1100 JONES,FORD,ADAMS,SMITH,SCOTT
20 SMITH 800 JONES,FORD,ADAMS,SMITH,SCOTT
20 SCOTT 3000 JONES,FORD,ADAMS,SMITH,SCOTT
30 WARD 1250 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
30 TURNER 1500 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
30 ALLEN 1600 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
30 JAMES 950 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
30 BLAKE 2850 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
30 MARTIN 1250 WARD,TURNER,ALLEN,JAMES,BLAKE,MARTIN
14 rows selected.
*3- I import this function in discoverer administration*
4- My problem :When i use the function string_agg(ename)over(partition by deptno) in discover deskto i got the error you can't use over in this place.
Any ideas.
Thank in advance.
Regards Salim. -
Error : while converting a WD ABAP object into SAP Transaction
Hi,
I am trying to converting a WD ABAP object into SAP Transaction but i am getting the following error while executing the transaction :
Network Access Message: The page cannot be displayed
Technical Information (for Support personnel)
Error Code: 502 Proxy Error. The specified Secure Sockets Layer (SSL) port is not allowed. ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. (12204)
IP Address: 10.114.6.144
Date: 4/7/2011 10:41:
Please help.> ISA Server is not configured to allow SSL requests from this port. Most Web browsers use port 443 for SSL requests. (12204)
This seems to be your specific network configuration. It seems that your corporate network is blocking HTTPS requests which don't use port 443. Your ABAP system is configured to use a port other than 443. Either talk to your basis admins about changing your ABAP system configuration to use port 443 or talk to your network administrators to allow whichever port the ABAP system is running on. -
Error in Single Row Object Type
Hi Buddies,
I have created 2 single row Object Type.It shows as Follows;
SQL> create or replace type dob_date as object
*2 (Day number,*
*3 Month varchar2(12),*
*4 year Number);*
*5 /*
Type created.
SQL> create or replace type names as object
*2 (Fname varchar2(10),*
*3 MName varchar2(10),*
*4 LName varchar2(10));*
*5 /*
Type created.
SQL> create table employee_details (Emp_no number,name names,dob dob_date,manager_name varchar2(15),
sal number,dept_name varchar2(10));
Table created.
And i inserted the data ..
SQL> insert into employee_details values(1,names('Sankara','narayanan','C'),dob_date(26,'MAY',1985);
1 row created.
If i update the column it shows a below error;
SQL> update employee_details set names.LName='Sank' where emp_no=1;
update employee_details set names.LName='Sank' where emp_no=1
ERROR at line 1:
ORA-00904: "NAMES"."LNAME": invalid identifier
Can anyone help me. Thanks in Advance
Regards
Karthick
Edited by: Karthick CS on Jan 29, 2009 2:46 PM
Edited by: Karthick CS on Jan 29, 2009 2:47 PMCREATE OR REPLACE TYPE dob_date AS OBJECT(
DAY NUMBER,
MONTH VARCHAR2(12),
YEAR NUMBER
drop type dob_date
CREATE OR REPLACE TYPE names AS OBJECT(
fname VARCHAR2(10),
mname VARCHAR2(10),
lname VARCHAR2(10)
create table employee_details (Emp_no number,name names,dob dob_date,manager_name varchar2(15),
sal number,dept_name varchar2(10));
insert into employee_details values(1,names('Sankara','narayanan','C'),dob_date(26,'MAY',1985),'manager',12312,'maths');
update employee_details ed set ed.name.lname='Sank' where emp_no=1;
update employee_details ed set ed.dob.DAY='27' where emp_no=1;
updated sucessfully
use the column name to refer...not the type name
Thanks
Muthu -
How to update Row Object in JSP Page? urgent!!!
HI,
I have a JSP Page and I have used jbo:DataSource and jbo:ApplicationModuleTags.
Step 1: I have created a oracle.jbo.ViewObject view using
view = ds.getRowSet().getViewObject(); and executed query using view.executeQuery()
Step 2: I access the Row Object for this view like this
Row rs = ds.getRowSet().getCurrentRow().
Step 3: I try to set the attributes for this Row using setAttribute methods like this
rs.setAttribute("empName","James");
Step 4: Now I want to update this row. How to update this???
If i need to get a Transaction object, which object's getTransaction I should use?
Note: Please note that I haven't used <jbo:Row > tags to access my row. I simply get the Row object from view and want to update certain attributes and commit to database.
Thanks
HariHi Harihara!
I think the record pointer is still before the first row, because you just executed the query.
Try one the following statements instead of 'Row rs = ds.getRowSet().getCurrentRow()':
Row rs = view.first();
or
Row rs = ds.getRowSet().first();
And don't forget to commit your changes if the master process doesn't take care of it already!
Good Luck!
Rolf van Deursen. -
How to find if cursor returned rows
If i have a procedure like
create procedure test as
cursor cur_test is
select col
from table;
begin
delete from tab1 a;
for var_cur_test in cur_test
loop
insert into temp
values(var_cur_test.col);
end loop;
commit;
end;
How do I check if the cursor has returned any rows?
I dont want to delete from tab1 if cursor 'cur_test' does not return any rows and I want to exit out of the proc.
If the cursor returns rows > 0 then I want to delete and do the insert.
Thanks for the help.The scenario is like this.
There is a schema A which has to run a process and populate its tables and at the end of the process(java program) run the procedure which is in schema B to pull data from schema A and populate the tables in schema B. If there is a case where Schema A's process fails( then Schema A's tables end up with no data), the process is still running the procedure in schema B and deleting the data in tables with no data being inserted.
So, I have to check in the procedure if the tables in Schema A have any data before the process can run the proc.
I tried the solution you provided but it returns no data
CREATE OR REPLACE PROCEDURE MMA_TEST
VAR_CONTRACT_ID VARCHAR2
AS
CURSOR CUR_TEST IS
SELECT CMS_CONTRACT_ID,CMS_PLAN_ID
FROM MMA_PLANS
WHERE CMS_CONTRACT_ID = VAR_CONTRACT_ID;
BEGIN
for var_cur_test in cur_test
loop
if (cur_test%rowcount = 1) then
delete from temp ;
end if ;
insert into temp
values(var_cur_test.cms_contract_id,var_cur_test.cms_plan_id);
end loop;
end; -
Hi All,
I need help in building view which actually can show columns data as row.
e.g.
row is as follows
Name Age Salary
ABC 25 10000
BBC 28 12000
The above tables data I want to get as
Name ABC BBC
Age 25 28
Salary 10000 12000
Thanks in advance.Even if I don't really understand such requirement, I wrote some times ago such function to play around that :
Re: Converting Columns into rows
Nicolas. -
How to convert columns to rows
I have 70 columns and I need to convert them into rows. Please help!
Currently, it is showing as listed below
message 1 message 2 message 3 message 4 message 5 .......... message 70
system 1 20 10 40 60 100
system 2 40 30 50 80 110
system 3 60 60 70 90 120
The desire output
system 1 system 2 system 3
message 1 20 40 60
message 2 10 30 60
message 3 40 50 70
message 70Something like...
SQL> ed
Wrote file afiedt.buf
1 select decode(rn,1,'Empno :'||empno
2 ,2,'Ename ('||empno||') :'||ename
3 ,3,'Job ('||empno||') :'||job
4 ) as col
5 from emp
6 cross join (select rownum rn from dual connect by rownum <= 3)
7* order by empno, rn
SQL> /
COL
Empno :7369
Ename (7369) :SMITH
Job (7369) :CLERK
Empno :7499
Ename (7499) :ALLEN
Job (7499) :SALESMAN
Empno :7521
Ename (7521) :WARD
Job (7521) :SALESMAN
Empno :7566
Ename (7566) :JONES
Job (7566) :MANAGER
Empno :7654
Ename (7654) :MARTIN
Job (7654) :SALESMAN
Empno :7698
Ename (7698) :BLAKE
Job (7698) :MANAGER
Empno :7782
Ename (7782) :CLARK
Job (7782) :MANAGER
Empno :7788
Ename (7788) :SCOTT
Job (7788) :ANALYST
Empno :7839
Ename (7839) :KING
Job (7839) :PRESIDENT
Empno :7844
Ename (7844) :TURNER
Job (7844) :SALESMAN
Empno :7876
Ename (7876) :ADAMS
Job (7876) :CLERK
Empno :7900
Ename (7900) :JAMES
Job (7900) :CLERK
Empno :7902
Ename (7902) :FORD
Job (7902) :ANALYST
Empno :7934
Ename (7934) :MILLER
Job (7934) :CLERK
42 rows selected. -
How to convert into columns rows
Hi all,
How to convert columns into rows.
thank you
regards
P PrakashWhats your DB Version. If its 11g and above you can check out PIVOT and UNPIVOT clause of SELECT statement. Its a new feature of 11g.
For previous version just search this forum you will get lots of examples. -
How to convert form Integer to Object
How do I a convert from Integer to Object?
ZIP codes are not integers because one does no
arithmetic with them.Sure they do. Look at this zip code:
90210-0001
Looks like subtract 1 from 90210 to me. <joking/>Well US zip codes yes but Canadian zip codes are
alpha numericbase 36 you mean. -
Convert one record row into multiple rows
Hi,
I have small requirement.I have selected one data base record into an internal table.Now internal table has 1 record i.e 1 row(ex: 10 columns). Now i will convert this single row record into multiple records i.e 10 rows( 10 columns wil; be converted into 10 rows). How i will convert this. Please give me any idea on this.
Regards
GeethaHi Geetha,
Search SCN using keyword, " convert Rows into columns" or vice versa,,,
U will get more answers & solutions,
Look at Some of the Previous threads....
Re: How to create a structure of itab as rows as colums and columns rows dy
Re: Transpose rows and columns
CONVERT ROWS INTO COLUMNS IN INTERNAL TABLE
Convert Internal table Rows into columns of another internal table
how to convert columns of an internal table to rows of another internal tab.
Convert Columns into Rows (internal tables) - Urgent Help Pleasse..
converting columns to rows
Thanks & regards,
Dileep .C -
Is there any way to convert the selected rows to text in javascript??
Hi All,
I have place some word file to indesign cs 5.5 it is almost in one table, i need to separate the text from the real tables, Is there any way to convert the selected rows to text in javascript??
If there is no way to make that, any one can help me to make a script to cut the selected rows and place it in privies pointer of the table to make it independent table and after that convert it to text ?This insert the rows contents after the table instead of being before:
for (var r = app.selection.length - 1; r >= 0; r--) {
for (var t = app.selection[r].rows.length - 1; t >= 0; t--) {
for (var u = app.selection[r].rows[t].cells.length - 1; u >= 0; u--) {
for (var c = app.selection[r].rows[t].cells[u].paragraphs.length - 1; c >= 0; c--) {
app.selection[r].rows[t].cells[u].paragraphs[0].move (LocationOptions.AFTER, app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset));
if (c != 0)
app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\r";
if (u != 0) {
app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\t";
else {
app.selection[r].rows[t].parent.parent.storyOffset.parent.insertionPoints.nextItem(app.se lection[r].rows[t].parent.parent.storyOffset).contents += "\r";
for (var r = 0; r < app.selection.length; r++) {
for (var t = app.selection[r].rows.length - 1; t >= 0; t--) {
app.selection[r].rows[t].remove (); -
UDO with Document Rows object : create lines with DIAPI
Hi all,
I'm created two tables : IFC_OBDC with Document object type and IFC_BDC1 with Document Rows object type.
I'm created the associated UDO.
How can i create data with DIAPI ??
I'm begin to use SAPBobsCom.Documents but i don't find the SAPbobsCOM.BoObjectTypes for my UDO.
The document is generate via program. So it is possible to create my UDO with DIAPI ??
Thanks for your response.
MichaelHi ,
as i undtrestand you have a form with 2 tables one document and the other document lines.
You want to populate the lines wuth DIAPI.
i can give you this hints:
create a document UDO with you tables.
on form load activate the menus: add and remove line
add the buttons OK and Cancel: with id 1 and 2
Normally i think that it will work.
Hope this helps.
Best regards. -
Converting Relational Tables to Object Views
We have extra information stored for each
field in a table. We call these Vertical
Tables:
rowid primary key - ties to normal tab
column_name "" - ties to column in ""
text_value the value if text
reliability rating for level of accuracy...
date of entry
Yes there are normal tables that the applications also access if they just need the value of the columns.
So I want to take this to object views. This way, while oracle is learning how to alter objects, we can still maintain our data and old application while converting to the use of objects.
I thought the best solution would be Type(s) based on the orignal data type. A generic type, text65_t could be created to hold every column that is less than 65 characters long:
CREATE TYPE text65_t AS OBJECT
WITH OBJECT IDENTIFIER(row_id) AS
row_id VARCHAR2(30),
value VARCHAR2(65),
reliability NUMBER(1,0),
doe DATE
A view can easily be created of this. The
mapping is one to one.
My problem is the next level. How can I build another view on top of text65_t, integer_t, date_t... that ties all of the
vertical rows back into a normal relational table or object.
Thanks,
bill
nullHi migration group,
I realize this is kind of off topic for
this discussion group. Where can I ask
questions like this?
thanks
bill -
How to Convert OBJECT_TYPE to the Object Type Used for DBMS_METADATA?
How do you convert the object type in ALL_OBJECTS to the object type that DBMA_METADATA.GET_DDL expects?
Thanks,
Kurzmaybe one needs to find a mapping between sys.metaview$ and all_objects:
SQL> select type, xmltag, udt, viewname from sys.metaview$ where type like '%PACKAGE%'
TYPE XMLTAG UDT VIEWNAME
DE_S_PACKAGE
DE_S_COMP_PACKAGE
DE_S_COMP_PACKAGE2
DE_S_COMP_PACKAGE_SPEC
DE_S_PACKAGE_BODY1
DE_S_PACKAGE_BODY
SE_PACKAGE
SE_COMP_PACKAGE
SE_COMP_PACKAGE2
SE_COMP_PACKAGE_SPEC
SE_PACKAGE_BODY
PACKAGE PACKAGE_T KU$_PROC_T KU$_PKG_VIEW
PACKAGE PACKAGE_BODY_T KU$_PROC_T KU$_PKGBDY_VIEW
PACKAGE FULL_PACKAGE_T KU$_FULL_PKG_T KU$_FULL_PKG_VIEW
PACKAGE_SPEC PACKAGE_T KU$_PROC_T KU$_PKG_VIEW
PACKAGE_BODY PACKAGE_BODY_T KU$_EXP_PKG_BODY_T KU$_EXP_PKG_BODY_VIEW
ALTER_PACKAGE_SPEC ALTER_PACKAGE_SPEC_T KU$_ALTER_PROC_T KU$_ALTER_PKGSPC_VIEW
ALTER_PACKAGE_BODY ALTER_PACKAGE_BODY_T KU$_ALTER_PROC_T KU$_ALTER_PKGBDY_VIEW
18 rows selected.
Maybe you are looking for
-
I would really like to be able to view the visualizer in the itunes window. when I uncheck full screen in preferences it does not take. I'ts automatically checked when I open preferences.
-
Unable to log into administrator account after software update
I've done a clean installation of server 10.5 on a G5 Xserve using the simplified "workgroup" setting. Created a named administrator account as part of the setup. Once passed the initial setup screens I did a software update to 10.5.8. After reboot I
-
Transfer a xml file from application server to another server using FTP
Hi experts, I am stuck in this situtaion. My interface generates a xml file on an application server. Now i need to read the xml file generated and transfer it to another system using FTP. I can use READ DATASET to read the file from the application
-
Hyperlinks in pdf document prepared in Illustrator
Hello ! Since this is my first post here I would like to greet everybody on this forum! I have a question as in the subject, is it possible to create interactive pdf document only in Illustrator? (I actually just wont to add few links to www addreses
-
Indesign CS4/CS3 and Export to PDF problems
Hello, I have been having problems with both Indesign CS3 and CS4 and exporting large documents to a PDF-file. Exporting halts with error messages like: "Failed to Export the PDF file" in CS4 or "Error encountered while reading JPEG image" in CS3. Pr