SQL LIMIT query for Oracle
Hi,
Is there an Oracle equivilent to the LIMIT query ?
Basically, I want to limit the number of rows retrieved.
Thanks in advance!
JD.
SELECT * FROM BigTable WHERE ROWNUM<=10as a follow up question can you use that for any
other type of query then SELECT? in MySQL forexample
you can use LIMIT on DELETE and UPDATE as well as
SELECT. Not as far as I know.
also another stupid question perhaps but theROWNUM
variable... Is it specific to the query/cursor orthe
table.?It must be used with care. For instance order by
occurs after the limit is applied.
One can use subqueries to get around the above though.thank you for the info... that is quite different then in operation to MySQL LIMIT (which is applied last after ORDER etc.) although that is expected in this case since it's part of the WHERE clause.. i guess that also means that HAVING will happen after as well?
Similar Messages
-
SQL*Net Client for Oracle 8i/9i ?
Hi..All,
Where do I download just the SQL*NET client for ORacle 8i/9i. ?
RegardsI have the same question: is there a stand-alone
installer for SQL*Net?No.
>
I need this for a Windows 2003 Server x64 platform.
The link provided just goes to the client, which is
far too large to transfer over my VPN connection to
a remote host.The alternative is the 'instant client'. You MIGHT be able to use that. -
What sql will be for oracle for FOR XML AUTO, XMLSCHEMA, ELEMENTS XSINIL
Hi all,
I have developed an application which supports both database sql server and oracle. I am using sql
select * from test FOR XML AUTO, XMLSCHEMA, ELEMENTS XSINIL, ROOT('test')
to fetch records in xml format from SQL Server.
I want to know what sql will be for oracle to get same result set in xml format.
Thanks in advance.
Edisphere software
Vijay singhhere is one way...
declare
qryctx DBMS_XMLquery.ctxType;
v_message CLOB;
v_sql VARCHAR2(400);
begin v_sql := 'SELECT * FROM DUAL';
qryctx := DBMS_XMLquery.newContext(v_sql);
v_message := DBMS_XMLquery.getXML(qryCtx);
DBMS_XMLquery.closeContext(qryCtx);
dbms_output.put_line(v_message);
end;
Sample output is:
===========
<?xml version = '1.0'?>
<ROWSET>
<ROW num="1">
<DUMMY>X</DUMMY>
</ROW>
</ROWSET>Validate it against a schema
xmldoc XMLTYPE;
v_xml_schema varchar2(4000) :='your schema definition';
xmldoc := XMLTYPE(v_xml).createSchemaBasedXML(v_xml_schema);
xmldoc.schemaValidate();Edited by: user130038 on Sep 20, 2011 6:00 AM -
Hello Experts,
I'm tryng to develop my first application for EP (v7 SP12) with NWDS (without NWDI).
This application has to read and write data in the EP DB (oracle v10).
I'm using:
<u>a Dictionary Project</u> (define the DB Tables)
<u>a Java Project</u> (define class as DAO, DBManager etc)
<u>a Library Project</u>
<u>an EJB Project</u>
<u>an EAR Project</u>
With these projects I can deploy a <u>webService</u> in my EP server.
BUT I have some problem with a query that I'm tryng to sent to my DB through a DAO Class called by my WebService.
The query is simple and correct but it does not work...
This is the error message returned (the query id in bold)
(column names: GIORNO, NOMEDITTA, NOMEAREA, NOMESETTORE)
<i>HTTP/1.1 500 Internal Server Error
Connection: close
Server: SAP J2EE Engine/7.00
Content-Type: text/xml; charset=UTF-8
Date: Fri, 21 Sep 2007 14:29:57 GMT
Set-Cookie: <value is hidden>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>java.sql.SQLException: com.sap.sql.log.OpenSQLException: The SQL statement <b>"SELECT NOMESETTORE, MIN(? - "GIORNO") AS GIORNI FROM SRS_DATEINFORTUNI WHERE NOMEDITTA = ? AND NOMEAREA= ? GROUP BY NOMESETTORE ORDER BY NOMESETTORE"</b> <u>contains the syntax error[s]: - 1:25 - the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</u></faultstring><detail><ns1:getGiorniSettori_com.akhela.giorniSenzaInfortuni.ejb.exception.GiorniSenzaInfortuniException xmlns:ns1='urn:GiorniSenzaInfortuniWSWsd/GiorniSenzaInfortuniWSVi'></ns1:getGiorniSettori_com.akhela.giorniSenzaInfortuni.ejb.exception.GiorniSenzaInfortuniException></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope></i>
The variable '?' is the today date, the difference <b>"(?-GIORNO)"</b> is an int..
Moreover in my DAO class the query is <b>"SELECT NOMESETTORE, MIN(? - GIORNO) AS GIORNI FROM SRS_DATEINFORTUNI WHERE NOMEDITTA = ? AND NOMEAREA= ? GROUP BY NOMESETTORE ORDER BY NOMESETTORE</b>", instead in the error message is reported <b>MIN(? - "GIORNO")</b>...
We have tryed also with alternative query, for example we used <b>"MIN(SYSDATA - GIORNO)"</b> but <b>SYSDATA</b> was interpreted as column name and not found....
Any help???
Best RegardsHi, I found something about the Host Variable (http://help.sap.com/saphelp_nw70/helpdata/en/ed/dbf8b7823b084f80a6eb7ad43bdbb9/content.htm), there explain that if you want to use an host variable you have to put ':' as prefix..
My problem is that <u>I need to extract the minimum of the subtraction between two dates:</u>
Query <b>MIN(? - GIORNO)</b> --> <i>Error: the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</i>
So I tried to use the ':' as indicated in the manual..
<b>MIN:(? - GIORNO)</b> --> - <i>SQL syntax error: the token ":" was not expected here
- expecting LPAREN, found ':'</i>
<b>MIN(:(? - GIORNO))</b> --> <i>- 1:25 - Open SQL syntax error: :PARAMETER not allowed
- 1:26 - SQL syntax error: the token "(" was not expected here
- 1:26 - expecting ID, found '('</i>
Then I tried to avoid the MIN() function and I tried to do just the subtraction:
<b>? - GIORNO</b> --><i> - 1:21 - the arithmetic expression >>? - "GIORNO"<< contains a host variable (parameter marker)</i>
<b>:(? - GIORNO)</b> --> <i>- 1:21 - Open SQL syntax error: :PARAMETER not allowed
- 1:22 - SQL syntax error: the token "(" was not expected here
- 1:22 - expecting ID, found '('</i>
<b>'2007-09-24' - GIORNO</b> --> <i>- 1:34 - SQL syntax error: first argument of operator "-" must be a number, date/time or interval
- 1:43 - SQL syntax error: arguments of operator "-" do not have correct types
- 1:43 - SQL syntax error: derived columns in SELECT list with AS must be values</i>
<b>GIORNO - GIORNO</b> --> <i>- 1:21 - the group by list and the select list are inconsistent: the column >>"GIORNO"<< is neither grouped nor aggregated
- 1:30 - the group by list and the select list are inconsistent: the column >>"GIORNO"<< is neither grouped nor aggregated</i>
Why these parts of query are not accepted???
I don't understand why... I hope you can help me.
Best Regards
Alessandro -
Converting MS SQL Server Query to Oracle Query
Hi There,
I've a strange problem. My project uses both MS SQL Server and Oracle server at run time. I've lot of queries which are written in MS SQL Style. Now, iam planning to write a helper class whic converts MS SQL Query to Oracle Query. Please Help me if any one has that kind of Helper with you.
Thanks And Regards,
Sasi KanthThat is why persistence applications like Hibernate or
CMP get used for apps that will use more than one DB,
but it takes upfront planning.
If you have a set of automated unit tests that work
with SQL Server, they will be a big help in getting
your Oracle code up and running.Indeed - JUnit and Ant would be a big help here.
It sounds like you have SQL in your JSPs, that will
work against you as well if so. If you are using a
DAO pattern, this will be much easier, as you can
re-implement each DAO for Oracle.If you'd layered this app properly, you might just implement an OracleDAOFactory and be done with it. Interfaces and a DAO layer would go a long way.
This is why layering is such a good idea. It isolates changes in a smaller subset of classes.
But your problem sounds pretty big. It'd be daunting even if it were well designed. -
Convert this sql server query to Oracle?
I've some SQL Server queries that I need to make a copy for to run against Oracle databases. (10G), any help would be appreciated.
SELECT COUNT(*) COUNT, CONVERT(DATETIME, CONVERT(VARCHAR(8), M.START_DATE, 1)) [DATE]
FROM OPTC.ORD_M_ORDER M
INNER JOIN OGEN.GEN_M_PATIENT_MAST P ON M.PAT_NUMBER = P.PAT_NUMBER
INNER JOIN OPTC.ORD_C_ORDER_TYPE C ON C.ORDER_TYPE_KEY = M.ORDER_TYPE_KEY
WHERE OGEN.DATEONLY(END_DATE)- OGEN.DATEONLY(START_DATE) < '1900/03/01'
--AND OGEN.DATEONLY(CREATED_ON) = OGEN.DATEONLY(CURRENT_TIMESTAMP)
AND ORDER_STATUS IN (4,7,8)
AND M.FACILITY_KEY IN (SELECT VALUE FROM OGEN.COMMA_TO_TABLE(@FACILITYKEY))
AND [START_DATE] BETWEEN @STARTDATE AND @ENDDATE
AND CAST(M.ORDER_FLAGS AS BIGINT) & 64 <> 64 AND P.DISCHARGE_DATE IS NULL
GROUP BY CONVERT(DATETIME, CONVERT(VARCHAR(8), [START_DATE], 1))Hi,
You could use the 'Translation Scratch Editor' in SQL*Developer to translate SQL*Server statements to Oracle.
SQL*Developer is free and can be downloaded from here -
http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html
Once installed start it up, then go to 'Tools' - 'Migration' - 'Translation Scratch Editor'
I did run the statement you have posted here through it but it gave errors so looks like there may be a problem with the syntx in any case.
Does this query run as it is in SQL*Server ?
Regards,
Mike
Edited by: mkirtley on Jan 5, 2012 12:45 PM -
Variable database name in SQL Server query using Oracle database link
Hi All,
I have an ApEx 4.1 app running on 11g x64 (11.2.0.1) on Windows Server 2008 x64, and I have some data integration points with a SQL Server (2005 and 2008) that I need to establish. I have configured the database link with dg4odbc and it works beautifully... I can execute queries against the SQL Server database without any problems using the database link.
However, there is a scenario where the SQL Server database name is dynamic, and I need to generate it on the fly in a PL/SQL block, and then use that in a dynamic SQL query (all of this in ApEx). This is where I run into problems... when I am querying the default database based on the ODBC connection and I don't have to specify the database name, there is no issue. But when I need to access one of several other non-default databases, I keep receiving the "invalid table" error.
This runs fine:* (note that "fv" is the name of my database link)
v_query1 := 'select "ReleaseDate" from dbo.Schedules@fv where dbo.Schedules."SchedID" = :schedule';
EXECUTE IMMEDIATE v_query1 into rel_date using schedule;
I then take that rel_date variable, convert to a varchar2 (rel_date_char), and then use it as the database name in the next query...
This returns an error_ (Error ORA-00903: invalid table name)
v_query2 := 'select "PARTNO" from :rel_date_char.dbo.ProdDetails@fv where "SchedID" = :schedule and "UnitID" = :unit
and "MasterKey" = :master and "ParentKey" = :parent';
EXECUTE IMMEDIATE v_query2 into part_number using schedule, unit, master, parent;
I have also tried using all of the following to no avail:
'select "PARTNO" from ' || :rel_date_char || '.dbo.ProdDetails@fv where "SchedID"...
'select "PARTNO" from ' || rel_date_char || '.dbo.ProdDetails@fv where "SchedID"...
'select "PARTNO" from ' || @rel_date_char || '.dbo.ProdDetails@fv where "SchedID"...
'select "PARTNO" from @rel_date_char.dbo.ProdDetails@fv where "SchedID"...
Is there a way to do this in PL/SQL?
Thanks for any help!
-Ian C.
Edited by: 946532 on Jul 15, 2012 7:45 PMJust did a test using passthrough:
SQL> set serveroutput on
SQL> declare
2 val varchar2(100);
3 c integer;
4 nr integer;
5 begin
6 c:= dbms_hs_passthrough.open_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3;
7 dbms_hs_passthrough.parse@FREETDS_DG4ODBC_EMGTW_11_2_0_3 (c, 'select count(*) from EMP');
8 LOOP
9 nr:= DBMS_Hs_Passthrough.fetch_row@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
10 exit when nr=0;
11 dbms_hs_passthrough.get_value@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c,1,val);
12 dbms_output.put_line(val);
13 end loop;
14 dbms_hs_passthrough.close_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
15 end;
16 /
24576
PL/SQL procedure successfully completed.
SQL> declare
2 val varchar2(100);
3 c integer;
4 nr integer;
5 begin
6 c:= dbms_hs_passthrough.open_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3;
7 dbms_hs_passthrough.parse@FREETDS_DG4ODBC_EMGTW_11_2_0_3 (c, 'select count(*) from dbo.EMP');
8 LOOP
9 nr:= DBMS_Hs_Passthrough.fetch_row@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
10 exit when nr=0;
11 dbms_hs_passthrough.get_value@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c,1,val);
12 dbms_output.put_line(val);
13 end loop;
14 dbms_hs_passthrough.close_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
15 end;
16 /
24576
PL/SQL procedure successfully completed.
So all 3 ways work for me.
Edited by: kgronau on Jul 23, 2012 10:08 AM
Now using variables to perform the select:
SQL> declare
2 val varchar2(100);
3 c integer;
4 nr integer;
5 tabname varchar2(20) :='EMP';
6 ownr varchar2(20) :='dbo';
7 dbname varchar2(20) :='gateway';
8 begin
9 c:= dbms_hs_passthrough.open_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3;
10 dbms_hs_passthrough.parse@FREETDS_DG4ODBC_EMGTW_11_2_0_3 (c, 'SELECT count(*) FROM '||dbname||'.'|| ownr || '.'||tabname||'');
11 LOOP
12 nr:= DBMS_Hs_Passthrough.fetch_row@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
13 exit when nr=0;
14 dbms_hs_passthrough.get_value@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c,1,val);
15 dbms_output.put_line(val);
16 end loop;
17 dbms_hs_passthrough.close_cursor@FREETDS_DG4ODBC_EMGTW_11_2_0_3(c);
18 end;
19 /
24576
PL/SQL procedure successfully completed.
=> instead of executing the statement using "execute Immediate" we have to use PASTHROUGH package to pass the statement to the SQL Server.
Edited by: kgronau on Jul 23, 2012 10:10 AM -
PL/SQL New Features for Oracle 10g
Hi,
If anybody asks what are the new features in PL/SQL for Oracle 10g version, what would be the answer?
Thanks,
Mrinmoyuser3001930 wrote:
Hi,
If anybody asks what are the new features in PL/SQL for Oracle 10g version, what would be the answer?
Thanks,
MrinmoyI would say: Who cares about 10g features nowadays. And they I would tell them about the new 11g features (that I remember). -
Limit query for Java Persistence Query Language
Hi,
Anybody know Java Persistence Query Language can support limit querry to limit the number of row return(Like SQL LIMIT clause)?
ThanksI think the javax.persistence.Query methods setFirstResult and setMaxResults are what you need...
-
Hi Everyone,
I want oracle query with which we can retrieve information about oracle RAC.
This information is, No of Clusters, Db instances...
Which Tables i can query for this information?
Thank You In Advance...
RoshanHi,
I think you would mean active instances on your cluster....
Query v$active_instances
04/05/[email protected]=287> select * from v$active_instances;
INST_NUMBER INST_NAME
1 rac1:ORCL1
2 rac2:ORCL2
2 rows selected.
Regards,
Rodrigo Mufalani
http://mufalani.blogspot.com -
Converting SQL Server Query to Oracle
Hello TechFriends,
Can any one of u please tell me equivalent of following SQL Server Query?
The same query runs in Oracle but givesa same reocrds in different order!! I want such an equivalent oracle query that gives records in same order as Sql Server does.
select
ProfValue_ProfScaleFK ProfScale,
ProfValue_Value ProfValue,
isnull(ProfValueDesc.name, ProfValue_name) ProfName
from
ProfValueDesc inner join TBL_LMS_Lang
on lang_fk = lang_pk and langid = 'en'
right outer join ProfValue
on ProfValue_ProfScaleFK = ProfScale_fk and ProfValue_Value = ProfValue_FK ;
Regards & TIA.
Anand.If you want a specific ordering why don't you add an ORDER BY clause?
Donal -
Tunning sql sub query for better performance
I have been given the task to tune this query for better execution as presently it take a very long time execute i will appreciate if someone can help.
Thank you.
SELECT a.fid_trx_no, a.fid_seq_no,a.bcc_customer_account,
a.bcc_msid,a.fid_trx_date,a.fid_trx_type,
a.fid_trx_initial_amount,a.fid_trx_fidodollar_amount
FROM
SPOT.SPOT_FIDODOLLAR_TRX a
WHERE
a.fid_trx_status = 'PE' AND a.fid_seq_no =
(SELECT MAX(c.fid_seq_no) FROM SPOT.SPOT_FIDODOLLAR_TRX c WHERE c.fid_trx_no = a.fid_trx_no) AND
a.FID_TRX_DATE <
(SELECT MAX(b.FID_TRX_DATE) FROM SPOT.SPOT_FIDODOLLAR_TRX b wHERE
b.bcc_customer_account = a.bcc_customer_account AND fid_trx_type IN
(SELECT par_code FROM SPOT.spot_parameter where par_value=:vAccountType AND par_type='FC')
)Rob...
so many times you post this link.. i think that Oracle should put this link in an obvious place....!!!
Greetings,
Sim -
Executing Native SQL query for oracle
Hi,
I want to run following native sql query but it is giving me error ora:933,
DATA: BEGIN OF WA,
TSP_NAME(255) TYPE C,
PER_USAGE(10) TYPE C,
END OF WA.
EXEC SQL PERFORMING loop_output.
select t.tablespace_name,'(' || TO_CHAR(ROUND(100*(NVL(b.bytes,0)/NVL(a
.bytes,0)))) || '%)' "TSUsed%" from dba_tablespaces t,
( select tablespace_name, sum(bytes)/1024/1024 bytes
from dba_data_files group by tablespace_name) a,
( select e.tablespace_name, sum(e.bytes)/1024/1024 bytes
from dba_extents e group by e.tablespace_name ) b,
( select f.tablespace_name, sum(f.bytes)/1024/1024 bytes
from dba_free_space f group by f.tablespace_name ) c
where t.tablespace_name = a.tablespace_name(+) and
t.tablespace_name = b.tablespace_name(+) and
t.tablespace_name = c.tablespace_name(+) into :wa.
ENDEXEC.
Please provide me the soln
Regards,
Bharat MistryORA-00933: SQL command not properly ended.
Try:
EXEC SQL PERFORMING loop_output.
select
into :wa
ENDEXEC.
(No "." at the end). If that doesn't work, try ending it with a ";"
Rob -
Equivlent CASE WHEN query for Oracle 8.05
Is there a way to construct a query similar to the statement below in Oracle version 8.05?
SELECT ename, CASE WHEN empid>10000 THEN 'Old Timer' ELSE 'New Comer' END
FROM employees;
I would like to use a single select query to handle such situations. Thanks for any suggestions.
Rogersql>select empid,
2 decode(sign(10001 - empid), 1, 'Newcomer', 'Oldtimer') description
3 from foo
4 order by empid;
EMPID DESCRIPT
9999 Newcomer
10000 Newcomer
10001 Oldtimer
10002 Oldtimer -
SQL Timestamp query for use with PointBase
I know this isn't an SQL forum, but I was wondering if someone could help me define an SQL query that returns rows from a table in a PointBase database with 2 separate TIMESTAMP fields. What I would like to do is return all rows where timefield1 is less than 2 hours later than timefield2.
I've tried things like:
select * from timetable where timefield1 < timefield2 + 2;
select * from timetable where timefield1 < timefield2 + time '02:00:00';
But haven't had any luck so far. Thanks in advance for any help you can give!usually SQL has a function called DATEADD where you take a timestamp, the amount to add and what to add it to.
So you would have
Select * from timetable where timefield1 < DATEADD(timefield2, 2, hours);
Not exactly that since I don't know PointBase so check its documentation fro such a command and then do you SQL using it.
Maybe you are looking for
-
Mandatory field in sales order additional data tab
Hi, I have added an extra field in additional data tab of sales order. How can i make this field as mandatory for certain sales organisations ? TIA
-
Why aren't my FW (PNG) image are not showing up
Hey guys. This is really bugging the hell out of me. I feel like I can't move on until i can figure out why my PNG images are not showing up in preview (F12). They did yesterday before I deleted some pages and renamed old pages I no longer needed. Al
-
I can´t acess itunes store, i can´t acess itunes store
When i do a sync, the itnues said that i´m not with internet conection, but i´m, and i can´t conect with itunes store to do the sync
-
Phone call from woman saying our Internet will be disconnected tomorrow.
We had a phone call tonight from a woman who claimed to be from Telstra, saying that our Internet was going to be disconnected tomorrow because our downloads were interfering with Telstra computers. When I claimed "[Bleep]" she said thank you and hun
-
I purchased ringtones from i tunes on my i phone 5, and when i hooked it up to my laptop at home i lost my ringtones. i can go to i tunes and see them but i cant figure out how to get them to my phone. any ideas?