Return rows from a range of numbers
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Hello,
Suppose we have a table which contains 2 columns, one is the start of range an the second the end of it:
with t1 as
(select 100 start_r, 250 end_r, 'R1' range_type from dual
union all
select 300 start_r, 350 end_r, 'R2' range_type from dual)
select * from t1Is there any possibility to obtain an output like:
CNUMBER RANGE_TYPE
100 R1
101 R1
102 R1
250 R1
300 R2
350 R2Thanks a lot, Alex.
WITH t1 AS
(SELECT 100 start_r, 250 end_r, 'R1' range_type
FROM DUAL
UNION ALL
SELECT 300 start_r, 350 end_r, 'R2' range_type
FROM DUAL)
SELECT *
FROM t1,
(SELECT LEVEL lvl
FROM dual
CONNECT BY LEVEL <= (SELECT MAX (end_r) mx
FROM t1)) t2
where t2.lvl between t1.start_r and t1.end_r
Similar Messages
-
How to return rows from tmp table created inside function??
Hi,
I'm trying to return rows from a cursor or table (created within
the function). How do I specify the return type?Hi,
Here is the code that examples to create a function that can
return data from table.This is achieved using REFCURSOR concept.
Hope this helps you.I'm giving all stuff in single PL/SQL
block.You can break it and create a package and declare
refcursor type and function in that as well.
DECLARE
-- Declare generic cursor type
TYPE gencur_type IS REF CURSOR ;
-- Declare generic cursor varaible
gencur gencur_type;
-- Declare record type
TYPE rec_type IS RECORD(descr emp.ename%type) ;
-- Declare record type variable
rec rec_type;
--This how you declare a local function that returns gencrtype
data set
--This function is called in main block
FUNCTION call_refcur return gencur_type
AS
rr gencur_type;
BEGIN
OPEN rr FOR SELECT descr FROM emp;
RETURN rr;
END;-- end of local function
-- Main block begins here
BEGIN
-- Call the local function so that gencur will have
-- the data set returned by select statement
gencur:= call_refcur;
-- Open a loop to test the stuff
LOOP
FETCH gencur INTO rec;
EXIT WHEN gencur%NOTFOUND;
null;
dbms_output.put_line(rec.ename);
END LOOP;
END;
Regards,
Sridhar -
Returning rows from stored proc
Hello, this is the sample from the SQL Developer help to create proc:
CREATE OR REPLACE
PROCEDURE list_a_rating(in_rating IN NUMBER) AS
matching_title VARCHAR2(50);
TYPE my_cursor IS REF CURSOR;
the_cursor my_cursor;
BEGIN
OPEN the_cursor
FOR 'SELECT title
FROM books
WHERE rating = :in_rating'
USING in_rating;
DBMS_OUTPUT.PUT_LINE('All books with a rating of ' || in_rating || ':');
LOOP
FETCH the_cursor INTO matching_title;
EXIT WHEN the_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(matching_title);
END LOOP;
CLOSE the_cursor;
END list_a_rating;
You have to write a cursor just to display results from a query. To me this is whacked but I'll go with it. So what if you wanted to return that resultset or refcursor so it can be consumed by a calling application or procedure? I tried something like
CREATE OR REPLACE PROCEDURE list_a_rating(in_rating IN NUMBER, MatchingTitles OUT Ref Cursor)
but that's not compiling. How do you return data from a proc or function?
Thanks,
Kenktrock wrote:
Hello, this is the sample from the SQL Developer help to create proc:A very poor example..
You have to write a cursor just to display results from a query. To me this is whacked but I'll go with it. All SQL you send to Oracle for parsing and execution winds up as SQL cursors in the server's SQL shared pool. You, the client, then get a handle as reference to this cursor that was created for your SQL statement. Using this handle you can now fetch the output of the cursor and consume it on the client side.
So there is no such thing as not using a cursor - you always use cursors. Many times it will be implicitly as you won't see the cursor workings as the client hides that from you.
As for DBMS_OUTPUT and PL/SQL... PL/SQL cannot "write output". And time and again (stupid?) people will use DBMS_OUTPUT thinking that is "writing to the client's display device".
It is not. It is writing data into a PL/SQL variable on the server. PL/SQL variable that consumes very expensive dedicated process memory on the server. The client (SQL-Developer, TOAD, SQL*Plus, etc) can read the contents of this variable and the client can render that contents on the client's display device.
So how on earth does it make sense to take SQL data on the server (that is structured data and can vary significantly in volume), and write that as plain text into a PL/SQL variable?
It does not make sense. At all. Bluntly put - it is just plain bloody stupid.
So how do you return data using PL/SQL? The same way as you return data using SQL.
PL/SQL allows the complexity of the SQL language, database model and so on to be moved from the client application into PL/SQL itself. The client thus no longer need to know table names, what to join where and when, how to write effective SQL and so on. It calls a PL/SQL procedure with optional parameters. This procedure has the logic to create the required SQL (based on the parameters too if applicable) and return the cursor handle for that SQL.
The client thus calls PL/SQL, PL/SQL serves as the SQL abstraction layer and does the complex SQL bit, and PL/SQL then returns the SQL cursor handle to the client.
In the PL/SQL language, there are different data types for dealing with the same SQL cursor handle - depending on what you want to do with that SQL cursor.
If you want to pass that SQL cursor handle to a client, then you need to use the sys_refcursor data type in PL/SQL. Remember that SQL cursor does not know or care what data type the client (such as PL/SQL) uses to reference it. All SQL cursors in the server's shared pool are the same - how you treat them from a client side (as an explicit cursor, implicit cursor, ref cursor, etc) is a client program decision.
Also keep in mind that a SQL cursor is NOT a result set. It is not a data set that is instantiated or created on the server that contains the data (or references to the data) for your SQL.
If this was the case - just how many such cursor result sets could the server create before running out of memory?
A cursor is an executable program. The source SQL code is compiled into a program called a cursor. This cursor contains the execution steps that the server needs to follow to find the data. The cursor then outputs this data as data is found. The execution plan of a cursor shows how this program looks like. -
Return rows from pl-sql record type
We have a requirement to create function which returns cursor to java application. This cursor will have data from pl-sql record type.
Tried with pipelined function. I have written code below.
CREATE or replace PACKAGE test_pkg IS
TYPE tp_rec IS RECORD(tt_id INTEGER,tt_text VARCHAR2(40));
TYPE obj_tp_recs IS TABLE OF tp_rec;
TYPE obj_tp_recs1 IS TABLE OF tp_rec;
FUNCTION test_func RETURN tp_rec;
function type_out return obj_tp_recs1 PIPELINED;
PROCEDURE test_type (result out sys_refcursor);
END;
CREATE OR REPLACE PACKAGE BODY OMS.test_pkg IS
FUNCTION test_func RETURN tp_rec
AS
currec tp_rec;
BEGIN
currec.tt_id := 1;
currec.tt_text := 'test1';
END;
FUNCTION type_out RETURN obj_tp_recs1 PIPELINED
AS
currec1 test_pkg.tp_rec;
begin
currec1 := test_pkg.test_func;
PIPE ROW(currec1);
dbms_output.put_line(currec1.tt_id);
end;
PROCEDURE test_type (result out sys_refcursor)
AS
BEGIN
OPEN RESULT
FOR SELECT * FROM TABLE(test_pkg.type_out());
END;
END;
SQL> VARIABLE x REFCURSOR
SQL> exec test_pkg.test_type(:x);
PL/SQL procedure successfully completed.
SQL> print xThis code returns no data found exeception from function. How to achieve result 1 and test1 from above code?
Thanks in advanceSQL> VARIABLE x REFCURSOR
SQL> exec test_pkg.test_type(:x);
PL/SQL procedure successfully completed.
SQL> print x
ERROR:
ORA-06503: PL/SQL: Function returned without value
ORA-06512: at "SCOTT.TEST_PKG", line 8
ORA-06512: at "SCOTT.TEST_PKG", line 14
no rows selectedIf you look at test_func body it is missing return statement. Now:
SQL> CREATE OR REPLACE PACKAGE BODY test_pkg IS
2 FUNCTION test_func RETURN tp_rec
3 AS
4 currec tp_rec;
5 BEGIN
6 currec.tt_id := 1;
7 currec.tt_text := 'test1';
8 RETURN currec;
9 END;
10
11 FUNCTION type_out RETURN obj_tp_recs1 PIPELINED
12 AS
13 currec1 test_pkg.tp_rec;
14 begin
15 currec1 := test_pkg.test_func;
16 PIPE ROW(currec1);
17 dbms_output.put_line(currec1.tt_id);
18 end;
19
20 PROCEDURE test_type (result out sys_refcursor)
21 AS
22 BEGIN
23 OPEN RESULT
24 FOR SELECT * FROM TABLE(test_pkg.type_out());
25
26 END;
27 END;
28 /
Package body created.
SQL> exec test_pkg.test_type(:x);
PL/SQL procedure successfully completed.
SQL> print x
TT_ID TT_TEXT
1 test1
SQL> SY. -
Return Rows from Stored Procedure - My 1st Attempt
Hi Everyone,
The code below compiles with error 'Error(11,1): PLS-00103: Encountered the symbol "/" '.
I'm using SYSDATE in this example for simplicity. The real procedure will do much more.
Thank You in Advance for Your Help,
Lou
create or replace
PACKAGE pkg_Search
AS
TYPE CUSTOM_REF_CURSOR IS REF CURSOR;
PROCEDURE My_Procedure (
arg_Cursor IN OUT CUSTOM_REF_CURSOR);
END;
/ -- LINE 11
CREATE OR REPLACE PACKAGE BODY pkg_Search
AS
PROCEDURE My_Procedure (
arg_Cursor IN OUT CUSTOM_REF_CURSOR)
IS
BEGIN
OPEN arg_Cursor FOR
SELECT sysdate FROM DUAL;
END;
END;
/copy the spec and the body separately in SQL*Plus and you're fine
SQL> create or replace
2 PACKAGE pkg_Search
3 AS
4 TYPE CUSTOM_REF_CURSOR IS REF CURSOR;
5 PROCEDURE My_Procedure (
6 arg_Cursor IN OUT CUSTOM_REF_CURSOR);
7 END;
8 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY pkg_Search
2 AS
3 PROCEDURE My_Procedure (
4 arg_Cursor IN OUT CUSTOM_REF_CURSOR)
5 IS
6 BEGIN
7 OPEN arg_Cursor FOR
8 SELECT sysdate FROM DUAL;
9 END;
10 END;
11 /
Package body created. -
SDO_RELATE to return rows where point is in polygon
Is it possible to return rows from a table where an input point geometry falls within the polygon sdo_geometry column stored in the row? I don't just want to return the geometry, but all columns in the row where the geometry "intersects".
I'm trying this, but run into an error:
SELECT * FROM COUNTY_PARCEL R where SDO_RELATE(R.SHAPE, MDSYS.SDO_GEOMETRY(2001,2868,MDSYS.SDO_POINT_TYPE(656849.49,883088.84,NULL),NULL,NULL), 'mask=anyinteract') = 'TRUE'
ORA-29902: error in executing ODCIIndexStart() routine
ORA-13282: failure on initialization of coordinate transformation
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 286
Any help is much appreciated.
Edited by: user12167574 on Feb 25, 2010 3:10 PMGuddie
YOUR SQL as such should do what you have described, however, the error message "ORA-13282: failure on initialization of coordinate transformation" is indicating an issue with coord transformation.
from the user manual:
"If geometry1 and geometry2 are based on different coordinate systems, geometry2 is temporarily transformed to the coordinate system of geometry1 for the operation to be performed, as described in Section 6.10.1."
could it be that the COUNTY_PARCEL table geometries have a different SRID then 2868 (from your input point geometry)?
might it even be so, that the COUNTY_PARCEL have no srid set?
Can you check that and let us know?
tx
Luc -
Finding missed sequence numbers and rows from a fact table
Finding missed sequence numbers and rows from a fact table
Hi
I am working on an OLAP date cube with the following schema:
As you can see there is a fact transaction with two dimensions called cardNumber and Sequence. Card dimension contains about three million card numbers.
Sequence dimension contains a sequence number from 0 to 255. Fact transaction contains about 400 million transactions of those cards.
Each transaction has a sequence number in 0 to 255 ranges. If sequence number of transactions of a card reaches to 255 the next transaction would get 0 as a sequence number.
For example if a card has 1000 transactions then sequence numbers are as follows;
Transaction 1 to transaction 256 with sequences from 0 to 255
Transaction 257 to transaction 512 with sequences from 0 to 255
Transaction 513 to transaction 768 with sequences from 0 to 255
Transaction 769 to transaction 1000 with sequences from 0 to 231
The problem is that:
Sometimes there are several missed transactions. For example instead of sequence from 0 to 255, sequences are from 0 to 150 and then from 160 to 255. Here 10 transactions have been missed.
How can I find all missed transactions of all cards with a MDX QUERY?
I really appreciate for helpsThank you Liao
I need to find missed numbers, In this scenario I want the query to tell the missed numbers are: 151,152,153,154,155,156,157,158,159
Relative transactions are also missed, so I think it is impossible to get them by your MDX query
Suppose this:
date
time
sequence
20140701
23:22:00
149
20140701
23:44:00
150
20140702
8:30:00
160
20140702
9:30:00
161
20140702
11:30:00
162
20140702
11:45:00
163
As you can see the sequence number of the last transaction at the 20140701 is 150
We expecting that the first transaction of the next day should be 151 but it is 160. Those 10 transactions are totally missed and we just need to
find missed sequence numbers -
Getting every odd-numbered row from result set
select *
from mytable
where MOD(rownum,2) = 1;
Why does this not give me every odd-numbered row from result set? It returns just 1 row....
Thank uWhen you say MOD(ROWNUM,2)=1 it will list only the first row with rowid which is devisible by 2 and gives a reminder 1.
Just tweak your query with a GROUP BY:
SQL> select rownum from your_table group by rownum having mod(rownum,2) =1;
ROWNUM
1
3
5
7
9
11
13
15
17
19
21
ROWNUM
23
25
27
29
31
33
35
37
39
41
43
etc...
[pre]
Jithendra -
Fetching a partial range of selected result rows from the client side
It has been a while since I started trying to solve this Oracle puzzle.
Basically, what I need it is a way to fetch from the client side a run-time
defined range of result rows of a arbitrary SELECT query.
In low-end databases like MySQL I can do it simply by appending the LIMIT
argument to the end of the SELECT query statment passing the number of
the first row that I want to be returned from the server from the total
result rows available in the result set and the maximum number of rows
that it may return if available.
In higher end databases I am supposed to use server side cursors to skip
any initial rows before the first that I want to retrieve and fetch only
the rows I want up to the given limit.
I am able to achieve this with PostgreSQL and Microsoft SQL server, but I
am having a hard time with Oracle. The main problem is how do I fetch
result rows from a server side cursor and have their data returned to a
client side in a result set like in a straight SELECT query?
I was able to create a cursor and fecth a row into a server side record
variable with the following PL/SQL code.
DECLARE
CURSOR c IS SELECT * FROM my_table;
my_row c%ROWTYPE;
BEGIN
OPEN c;
FETCH c INTO my_row;
CLOSE c;
END;
I want to do this from PHP, so I don't have client side ESQL variables to
store the result set data structure. Anyway, if I can do it just with
SQLPlus I should be able to do it in PHP.
If I do straight SELECT I can get the result set, but in a PL/SQL script
like the one above I don't seem to be able to select the data in the
fetched row record to have returned to the client. Does a straight SELECT
query sends the result rows to a default client side variable?
If anybody can help, I would appreciate if you could mail me at
[email protected] because I am not able to access this forum all the time in
the Web. BTW, is it possible to access this forum by e-mail?
Thanks in advance,
Manuel Lemos
nullHello Jason,
On 03-Feb-00 05:34:14, you wrote:
I'm not sure I totally understand your problem, but I think you might be able
to solve it by using the ROWNUM variable. ROWNUM returns the sequenc number
in which a row was returned when first selected from a table. The first row
has ROWNUM = 1, the second has ROWNUM = 2, etc. Just remember that the
ROWNUM is assigned as soon as it's selected, even before an order by. So if
you have an order by clause, it'll mess it up. Here's an example. I hope
that helps.I though of that before but it doesn't help because if you use ORDER BY the
first result row might not have ROWNUM=1 and so on. Another issue is that
I want to be able to skip a given number of result rows before returning
anything to the client.
The only way I see to do it is to get the rows with server side cursor.
But how do I return them to the client? Where does a normal select returns
the rows? Isn't there a way to specify that the fetch or something else
return the rows there?
Regards,
Manuel Lemos
Web Programming Components using PHP Classes.
Look at: http://phpclasses.UpperDesign.com/?user=[email protected]
E-mail: [email protected]
URL: http://www.mlemos.e-na.net/
PGP key: http://www.mlemos.e-na.net/ManuelLemos.pgp
null -
How do I export a specific set of rows from Numbers?
What i am looking to be able to do is
Export a specific set of rows from Numbers
I am working with large files of information
but would like to break the file up into smaller files
for example
I have 1 file with 40,000 rows
I need to be able to export/save this file into 4 smaller files
Rows 1-10,000
Rows 10,001-20,000
Rows 20,001-30,000
Rows 30,001-40,000I do not think I would use Numbers for this task.
I would duplicate the file (let's say the name is data.txt)
and name the two files:
dataA.txt
dataC.txt
then I would open dataA.txt in TextEdit and delete the last half of the file and save
then I would open dataC.txt in TextEdit and delete the first half of the file and save
then duplicate dataA.txt and name the new file dataB.txt
then duplicate dataC.txt and name the new file dataD.txt
Now open dataA.txt and delete the last half of the file, save
Now open dataB.txt and delete the first half of the file, save
Now open dataC.txt and delete the last half of the file, save
Now open dataD.txt and delete the first half of the file, save
if you did this very often I would suggest a script of some kind -
How to return the entire row from a table
Hi guys,
Tabl A
FirstName varchar2(10),
Age Number,
Add varchar2(100),
Table B
Filedname varchar2(200), -- contains all the fields of table A
Datatype varchar2(100), -- Contains the datatypes of the filedname
Length Number -- contains the length of the fileds
Now how can i return the entire row from table A with the datatype and its length.
Any help would be appreciated ?
Here is the query I wrote but it how to take the datatype and its length..
create or replace procedure disp_table_data
as
type r_cursor is REF CURSOR;
c_A r_cursor;
er A%rowtype;
begin
open c_A for select * from A;
loop
fetch c_A into er;
exit when c_A%notfound;
dbms_output.put_line(er.FirstName||'--'||er.Age);
end loop;
close c_A;
END;
/Guys,
I want column value from table A and its corresponding data_type and length from table B. I think I cant do it through joins.
Any idea would be appreciated ?.
Example ..
Tabl A
FirstName varchar2(10),
Age Number,
Add varchar2(100)
insert into A values('John',24,'Boston');
Table B
Filedname varchar2(200), -- contains all the fields of table A
Datatype varchar2(100), -- Contains the datatypes of the filedname
Length Number -- contains the length of the fileds
insert into B values('FirstName','varchar2',10); -- this is coming from table A.
Output should be like this...
John,Varchar2,10
Here (John is the FirstName - coming from table A, Varchar2 is a Datatype and 10 is the Length which are coming from table B ). Only column values are coming from table A , corresponding datatype and length are coming from B.
Any idea would be appreciated ?
Thanks. -
JDeveloper + WebServices, RETURN multiple rows from pl/sql
I need to return multiple rows from pl/sql procedure or function and publish it as a Web Service through JDeveloper.
I try to use ref cursor, but then found that it is impossible to use ref cursor as a return value in Web Services.
Please, help me to achieve result.Hello. I tried to make commands from article, but got errors
"C:\Program Files\Java\jdk1.6.0_18\bin\java" -jar D:\oracle\Middleware\oracle_common\modules\oracle.webservices_11.1.1\wsa.jar -plsqlAssemble -appName Echo -sql wo -dataSource jdbc/OracleManagedDS -dbConnection jdbc:oracle:thin:@192.168.246.2:1521:data -dbUser syd/manager -style rpc -use encoded
Error: Interface oracle.generated.wo: The class could not be loaded from the class path. -
Custom database functoid to return multiple rows from database
Hi,
I have created a custom database fucntoid to execute a stored procedure which returns just single row from the database.But I could not manage to return multiple rows from the database.
Does anyone know how to return multiple rows from DB and create a node with that many occurrences in the target schema?
Thanks
JBIf you want to do this in messaging-only way without orchestration, then only option let to you is using .NET in BizTalk:
We had similar requirement with one of our clients, where they didn’t want to use orchestration (though we emphasised on less impact orch would have compared to manageability),
they still wanted to have pure-messaging only.
We extended the custom XslTransform component that ships with BizTalk SDK (<BizTalk installation directory>\SDK\Samples\Pipelines\XslTransformComponent)).
Created a custom disassembler pipeline component, used the XslTransform component from SDK to execute the map’s XSLT. Here we created a map with every links except the database ones. After executing the map, access the database, execute the store procedure
which returns more than one row/dataset, enrich the XSLT transformed message with the dataset from your database in disassembler.
Since .NET gives you the flexibility of access the dataset with more than one row, you can enrich the message in custom pipeline code.
Other option is code the message transformation completely in .NET code in custom disassembler by passing the received message to method/code which would code the map/enrichment.
While enriching you can execute the store procedure which returns more than one row/dataset, enrich the message further with the dataset from db.
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply. -
How to execute procedure returning data rows from sql plus
Hi,
I want to execute a stored procedure that returns data rows from sql plus. please let me know the syntax for the same.
Thanks,
YGuser13065317 wrote:
Even if i get the result set into the cursor, do i have to do normal fetch into all the coumn variables within a loop
But suppose no of columns in my result set varies depending on a parameter to the stored procedure.
Is there any straightforward way to retrieve all the data irrespective of no of columns in the result set.There is no such thing as a "+result set+". Oracle does not create a temporary data set in memory that contains the results of your query. What would happen if this result set is a million rows and is too large to fit into memory? Or there are a 100 clients each with a 100,000 row result set?
This is not scalable. You will be severely limited in the number and sizes of these "+result sets+" that can be created in server memory.
A cursor is in fact a "program" that is created by compiling the SQL source code that you provide. This source code is parsed and compiled into what Oracle calls an execution plan. This is nothing but a series of instructions that the cursor will execute in order to return the rows required.
Thus the result set is actually the output from a cursor (a program). Likewise, bind variables are the input parameters to this program.
All SQLs are parsed and compiled as cursors and stored in the SQL Shared Pool. Oracle gives you handle in return to use to address this cursor - bind values to it, execute it, describe the output structure returned by the cursor, and fetch the output from the cursor.
On the client side, this handle is used in different ways. In PL/SQL alone, this cursor handle can be used as an implicit cursor (you do not even see or use the cursor handle in your PL/SQL code). Or you can use a PL/SQL cursor variable. Or a DBMS_SQL cursor variable. Or a reference cursor variable.
Why so many different client structures for the very same SQL cursor handle returned by Oracle? Because to allow you, the programmer, all kinds of different features and flexibility.
The ref cursor feature is the ability to pass this cursor handle around, not only between PL/SQL code, but also from PL/SQL to the actual client process (Java. VB, SQL*Plus, TOAD, etc).
The primary thing to remember - irrespective of what the client calls this (e.g. ref cursor, SQL statement handle, etc), this all refers to the same SQL cursor in the Shared Pool. And that this SQL cursor is a program that outputs data, and not a result set in itself. -
SP which returns error cannot access rows from a non-nested table item.
Dear Experts
I have an SP which gives error " cannot access rows from a non-nested table item ". But here the strange thing is, it works fine with one query. But I write union query with another table, only then it gives error.
CREATE OR REPLACE PROCEDURE SP_MONTHLYSALESUMMARY (
P_TRANSACTIONMONTH VARCHAR2,
P_LEDGERID VARCHAR2,
O_RESULTSET OUT TYPES.CURSORTYPE)
AS
BEGIN
OPEN O_RESULTSET FOR
-- POINT OF SALE
SELECT
L.DESCRIPTION LEDGERNAME,
LS.DESCRIPTION LEDGERSUBGROUPNAME,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO
AS ID,
C.NAME || E.NAME || AF.NAME || M.NAME AS NAME,
SUM(CASE
WHEN PB.EMPLOYEE_ID IS NOT NULL
AND T.ISCREDITTRANSACTIONMODE = 2
THEN
PB.TAXAMOUNT
ELSE
0
END)
EMPLOYEEDEBITCARDTAXAMOUNT,
L.PRINTNO
FROM POINTOFSALEBILL PB
INNER JOIN POINTOFSALEBILLDETAIL PD
ON PB.POINTOFSALEBILL_ID = PD.POINTOFSALEBILL_ID
INNER JOIN TRANSACTIONTYPE TY
ON TY.TRANSACTIONTYPE_ID = PB.TRANSACTIONTYPE_ID
INNER JOIN TRANSACTIONMODE T
ON T.TRANSACTIONMODE_ID = PB.TRANSACTIONMODE_ID
INNER JOIN LEDGER L
ON L.LEDGER_ID = PD.LEDGER_ID
INNER JOIN LEDGERSUBGROUP LS
ON LS.LEDGERSUBGROUP_ID = L.LEDGERSUBGROUP_ID
LEFT JOIN CORPORATE C
ON C.CORPORATE_ID = PB.CORPORATE_ID
LEFT JOIN EMPLOYEE E
ON E.EMPLOYEE_ID = PB.EMPLOYEE_ID
LEFT JOIN AFFILIATEMEMBER AF
ON AF.AFFILIATEMEMBER_ID = PB.AFFILIATEMEMBER_ID
LEFT JOIN MEMBER M
ON M.MEMBER_ID = PB.MEMBER_ID
WHERE TY.ISDEBIT = 1 AND PB.FLAG = 0 AND T.ISROOMNO = 2
AND (P_TRANSACTIONMONTH IS NULL
OR P_TRANSACTIONMONTH =
TO_CHAR (PB.BILLDATE, 'fmMONTH-YYYY'))
AND (P_LEDGERID IS NULL
OR L.LEDGER_ID IN
( (SELECT COLUMN_VALUE
FROM TABLE(GET_ROWS_FROM_LIST1 (
P_LEDGERID,
GROUP BY L.DESCRIPTION,
LS.DESCRIPTION,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO,
C.NAME || E.NAME || AF.NAME || M.NAME,
L.PRINTNO;
END SP_MONTHLYSALESUMMARY;
GET_ROWS_FROM_LIST1 is a function, which i am using to pass " IN " to oracle. There is no problem with this, since it works fine with one query
REATE OR REPLACE FUNCTION BCLUB1868.GET_ROWS_FROM_LIST1
(L IN LONG DEFAULT NULL, SEP IN VARCHAR2 DEFAULT ',')
RETURN MYVARCHARTABLE1 PIPELINED
AS
L_POS INT := 1;
L_NEXT INT;
L_PART VARCHAR(500);
BEGIN
SELECT INSTR( L, SEP, L_POS) INTO L_NEXT FROM DUAL;
WHILE (L_NEXT>0)
LOOP
SELECT SUBSTR(L, L_POS, L_NEXT - L_POS) INTO L_PART FROM DUAL;
PIPE ROW(L_PART);
SELECT L_NEXT + 1, INSTR( L, SEP, L_POS)
INTO L_POS, L_NEXT FROM DUAL;
END LOOP;
SELECT SUBSTR(L, L_POS) INTO L_PART FROM DUAL;
PIPE ROW(L_PART);
RETURN;
END;
Request help from you all experts in the forumHere it is
CREATE OR REPLACE PROCEDURE SP_GRCS (
P_TRANSACTIONMONTH VARCHAR2,
P_LEDGERID VARCHAR2,
O_RESULTSET OUT TYPES.CURSORTYPE)
AS
BEGIN
OPEN O_RESULTSET FOR
-- Point of sale
SELECT *
FROM ( SELECT L.DESCRIPTION LEDGERNAME,
LS.DESCRIPTION LEDGERSUBGROUPNAME,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO
AS ID,
C.NAME || E.NAME || AF.NAME || M.NAME AS NAME,
SUM(CASE
WHEN PB.EMPLOYEE_ID IS NULL
AND T.ISCREDITTRANSACTIONMODE = 1
THEN
PB.BILLAMOUNT
ELSE
0
END)
MEMBERDEBITAMOUNT,
L.PRINTNO
FROM POINTOFSALEBILL PB
INNER JOIN POINTOFSALEBILLDETAIL PD
ON PB.POINTOFSALEBILL_ID = PD.POINTOFSALEBILL_ID
INNER JOIN TRANSACTIONTYPE TY
ON TY.TRANSACTIONTYPE_ID = PB.TRANSACTIONTYPE_ID
INNER JOIN TRANSACTIONMODE T
ON T.TRANSACTIONMODE_ID = PB.TRANSACTIONMODE_ID
INNER JOIN LEDGER L
ON L.LEDGER_ID = PD.LEDGER_ID
INNER JOIN LEDGERSUBGROUP LS
ON LS.LEDGERSUBGROUP_ID = L.LEDGERSUBGROUP_ID
LEFT JOIN CORPORATE C
ON C.CORPORATE_ID = PB.CORPORATE_ID
LEFT JOIN EMPLOYEE E
ON E.EMPLOYEE_ID = PB.EMPLOYEE_ID
LEFT JOIN AFFILIATEMEMBER AF
ON AF.AFFILIATEMEMBER_ID = PB.AFFILIATEMEMBER_ID
LEFT JOIN MEMBER M
ON M.MEMBER_ID = PB.MEMBER_ID
WHERE TY.ISDEBIT = 1 AND PB.FLAG = 0 AND T.ISROOMNO = 2
AND (P_TRANSACTIONMONTH IS NULL
OR P_TRANSACTIONMONTH =
TO_CHAR (PB.BILLDATE, 'fmMONTH-YYYY'))
AND (P_LEDGERID IS NULL
OR L.LEDGER_ID IN
( (SELECT COLUMN_VALUE
FROM TABLE(GET_ROWS_FROM_LIST1 (
P_LEDGERID,
GROUP BY L.DESCRIPTION,
LS.DESCRIPTION,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO,
C.NAME || E.NAME || AF.NAME || M.NAME,
L.PRINTNO
UNION ALL
-- Guest Registration
SELECT L.DESCRIPTION LEDGERNAME,
LS.DESCRIPTION LEDGERSUBGROUPNAME,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO
AS ID,
C.NAME || E.NAME || AF.NAME || M.NAME AS NAME,
SUM(CASE
WHEN PB.EMPLOYEE_ID IS NULL
AND T.ISCREDITTRANSACTIONMODE = 1
THEN
PB.BILLAMOUNT
ELSE
0
END)
MEMBERDEBITAMOUNT,
L.PRINTNO
FROM GUESTREGISTRATION PB
INNER JOIN GUESTREGISTRATIONDETAIL PD
ON PB.GUESTREGISTRATION_ID = PD.GUESTREGISTRATION_ID
INNER JOIN TRANSACTIONTYPE TY
ON TY.TRANSACTIONTYPE_ID = PB.TRANSACTIONTYPE_ID
INNER JOIN TRANSACTIONMODE T
ON T.TRANSACTIONMODE_ID = PB.TRANSACTIONMODE_ID
INNER JOIN LEDGER L
ON L.LEDGER_ID = PD.LEDGER_ID
INNER JOIN LEDGERSUBGROUP LS
ON LS.LEDGERSUBGROUP_ID = L.LEDGERSUBGROUP_ID
LEFT JOIN CORPORATE C
ON C.CORPORATE_ID = PB.CORPORATE_ID
LEFT JOIN EMPLOYEE E
ON E.EMPLOYEE_ID = PB.EMPLOYEE_ID
LEFT JOIN AFFILIATEMEMBER AF
ON AF.AFFILIATEMEMBER_ID = PB.AFFILIATEMEMBER_ID
LEFT JOIN MEMBER M
ON M.MEMBER_ID = PB.MEMBER_ID
WHERE TY.ISDEBIT = 1 AND PB.FLAG = 0 AND T.ISROOMNO = 2
AND (P_TRANSACTIONMONTH IS NULL
OR P_TRANSACTIONMONTH =
TO_CHAR (PB.BILLDATE, 'fmMONTH-YYYY'))
AND (P_LEDGERID IS NULL
OR L.LEDGER_ID IN
( (SELECT COLUMN_VALUE
FROM TABLE(GET_ROWS_FROM_LIST1 (
P_LEDGERID,
GROUP BY L.DESCRIPTION,
LS.DESCRIPTION,
C.CORPORATENO
|| E.EMPLOYEENO
|| AF.AFFILIATEMEMBERNO
|| M.MEMBERNO,
C.NAME || E.NAME || AF.NAME || M.NAME,
L.PRINTNO)
ORDER BY PRINTNO;
END SP_GRCS;
I have even tried adding L.Ledger_ID in select statement.
Maybe you are looking for
-
PDF Attachment in Purchase Requisition
Hi, How do I upload a PDF document as an attachment in the purchase requisition? I'm able to upload a text file, but they want to upload a PDF document. Thanx Elan
-
Messages imported with COBRAS do not appear in mailboxes
I used COBRAS to export users and their messages from Unity Connection 8.0. Then I imported the users and their messages in Unity Connection 10.5. The users were imported successfully but, even though the log shows the messages being imported, the ma
-
Leopard's Safari parental controls should have kept Tiger's approach
Parental controls for Safari in Leopard do not work as well as Tiger's. Tiger had the option to allow only sites that are bookmarked. Now you have to add them in the parental control's dialog. But more annoying and worst behavior is that you must app
-
OK, this may have been posted before, but I am not scrolling through a bajillion threads to find out: I run i Tunes on my PC and kept all music and image files on a Maxtor external drive. It crashed, and in the raw data transfer, ALL the files were r
-
Change mission control wallpaper ?
Hi, is there anyway to change the mission control wallpaper on mavericks ? I changed the wallpaper for the dashboard but can't find out how to do it for the mission control background .