SQL statement implementation that limits the number of data queries in ORACLE and SYBASE databases

Source: Internet
Author: User
Tags sybase database

SQL statement implementation that limits the number of data queries in ORACLE and SYBASE databases

I. Overview
For some software that needs to deal with a large amount of data through databases, processing performance is very important. In order to ensure that the software can process all data without crashing, the idea of batch processing came into being. The specific method of batch processing is to compile an SQL statement. Each time a specified number of data records are returned to the software for processing, after the batch of data is processed, the next batch is processed.
This article describes how to write SQL statements in batches in ORACLE and SYBASE databases through the operation process of specific database tables (tb_employeeinfo.

2. ORACLE database processing
First, create the tb_employeeinfo table, which is defined as follows:

beginexecute immediate 'drop table tb_employeeinfo CASCADE CONSTRAINTS';EXCEPTION WHEN OTHERS THEN NULL;end;/create table tb_employeeinfo(    employeeno    varchar2(20)     not null,    -- no. of employee    employeename  varchar2(20)     not null,    -- name of employee    employeeage   int              not null     -- age of employee);create unique index idx1_tb_employeeinfo on tb_employeeinfo(employeeno);prompt 'create table tb_employeeinfo ok';commit;

Then, insert seven data entries in the tb_employeeinfo table, as shown below:

insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1000', 'ZhangSan', 20);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1001', 'LiSi', 21);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1002', 'WangWu', 21);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1003', 'ZhouLiu', 22);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1004', 'SunQi', 22);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1005', 'LiuBa', 23);insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1006', 'ChenShi', 25);

If we want to query 5 data records from the tb_employeeinfo table at a time, what should we do?
The ORACLE database has a rownum used in the query (select) statement to limit the number of data records returned after each execution. For example, if you want to return 5 data records from the tb_employeeinfo table, write the following SQL statement:

select employeeno, employeename, employeeage from tb_employeeinfo where rownum<=5;

The execution result is as follows:

SQL> select employeeno, employeename, employeeage from tb_employeeinfo where rownum<=5;EMPLOYEENO EMPLOYEENAME EMPLOYEEAGEA1000 ZhangSan 20A1001 LiSi 21A1002 WangWu 21A1003 ZhouLiu 22A1004 SunQi 22

Iii. Processing in the SYBASE Database
First, create the tb_employeeinfo table, which is defined as follows:

if exists(select * from sysobjects where name='tb_employeeinfo') drop table tb_employeeinfogocreate table tb_employeeinfo( employeeno varchar(20) not null, -- no. of employee employeename varchar(20) not null, -- name of employee employeeage int not null -- age of employee)gocreate unique index idx1_tb_employeeinfo on tb_employeeinfo(employeeno)goprint 'create table tb_employeeinfo ok'go

Then, insert seven data entries in the tb_employeeinfo table, as shown below:

insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1000', 'ZhangSan', 20)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1001', 'LiSi', 21)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1002', 'WangWu', 21)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1003', 'ZhouLiu', 22)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1004', 'SunQi', 22)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1005', 'LiuBa', 23)insert into tb_employeeinfo(employeeno, employeename, employeeage) values('A1006', 'ChenShi', 25)

If we want to query 5 data records from the tb_employeeinfo table at a time, what should we do?
In the SYBASE Database, you can use the "set rowcount X" statement to limit the number of queries. For example, if you want to return 5 data records from the tb_employeeinfo table, write the following SQL statement:

set rowcount 5select employeeno, employeename, employeeage from tb_employeeinfoset rowcount 0

The execution result is as follows:

employeeno employeename employeeage A1000 ZhangSan 20 A1001 LiSi 21 A1002 WangWu 21 A1003 ZhouLiu 22 A1004 SunQi 22

Note: After setting the number of query entries to 5 and the query is successful, you must have the "set rowcount 0" statement. Otherwise, at the next execution, you can only return up to five data records.
For example, execute the following statement first:

set rowcount 5select employeeno, employeename, employeeage from tb_employeeinfo

The returned results are the same as those above.

Execute the following statement (to query all 7 statements ):

select employeeno, employeename, employeeage from tb_employeeinfo

However, at this time, only five results are returned, which is inconsistent with our intention.
Therefore, in the SYBASE Database, the "set rowcount X" statement must be paired with the "set rowcount 0" statement.

Iv. Summary
Compared with the data table in this article, the data table fields in the actual software project are more, the data volume is larger, and some other conditions may exist in the query statement, however, the basic SQL statement compiling modes are the same. You can compile the corresponding SQL statements by reference.

 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.