ALTER PROCEDURE dbo.sdo_rubrics_GetRubricators
(
@page_index int,
@page_size int
)
AS
SELECT id, title, locale, description
FROM (
SELECT id, title, locale, description,
ROW_NUMBER() OVER (ORDER BY title ASC) AS row_num
FROM sdo_Rubricators
) AS Rubricators
WHERE row_num BETWEEN
(@page_index * @page_size + 1)
AND ((@page_index + 1) * @page_size)
ORDER BY title ASC
выборка определенного кол-ва записей
{
public int id;
public DateTime dt;
}
....
for (int i = 0; i < blocks.Length; i++)
{
string comm = string.Format("SELECT ID,Date,Valid,Latitude,Longitude,Altitude,Direction,Speed" +
",Sensor_1,Sensor_2,Sensor_3,Sensor_4,Sensor_5,Sensor_6,Sensor_7," +
"Sensor_8,Sensor_9,Sensor_10,RecordType,Freq_1,Freq_2,Status,Duplicate FROM LOG" +
"WHERE ID={0} AND Date>'{1}' AND Valid='True'", blocks.id, blocks.dt);
}
Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи,
считали следующие 1000 начиная с последней даты. В МySQL это limitom делалось а у меня
бд MS SQL.
Цитата: vitalik_4
public struct block
{
public int id;
public DateTime dt;
}
....
for (int i = 0; i < blocks.Length; i++)
{
string comm = string.Format("SELECT ID,Date,Valid,Latitude,Longitude,Altitude,Direction,Speed" +
",Sensor_1,Sensor_2,Sensor_3,Sensor_4,Sensor_5,Sensor_6,Sensor_7," +
"Sensor_8,Sensor_9,Sensor_10,RecordType,Freq_1,Freq_2,Status,Duplicate FROM LOG" +
"WHERE ID={0} AND Date>'{1}' AND Valid='True'", blocks.id, blocks.dt);
}
Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи,
считали следующие 1000 начиная с последней даты. В МySQL это limitom делалось а у меня
бд MS SQL.
{
public int id;
public DateTime dt;
}
....
for (int i = 0; i < blocks.Length; i++)
{
string comm = string.Format("SELECT ID,Date,Valid,Latitude,Longitude,Altitude,Direction,Speed" +
",Sensor_1,Sensor_2,Sensor_3,Sensor_4,Sensor_5,Sensor_6,Sensor_7," +
"Sensor_8,Sensor_9,Sensor_10,RecordType,Freq_1,Freq_2,Status,Duplicate FROM LOG" +
"WHERE ID={0} AND Date>'{1}' AND Valid='True'", blocks.id, blocks.dt);
}
Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи,
считали следующие 1000 начиная с последней даты. В МySQL это limitom делалось а у меня
бд MS SQL.
не в ту тему запостил...
а по существу: если есть какое либо поле автоинкриментное, то в условие добавить выборку по нему (BETWEEN) и каждый раз пределы этой выборки увеличиваешь с нужным шагом
ЗЫ: еще есть SELECT TOP
Цитата: vitalik_4
Надо сделать такого плана выборку только не всех записей сразу а пакетами по 1000 записей
Прочитали 1000 записей, положили в др БД, запомнили дату последней прочитаной записи...
Вот у меня в MsSql 2005 есть хранимка для страничного чтения данных из таблицы
Код: