Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Есть ли ДБ2 переменная для выявления количества записей sql statmenta. Например ---------------- select * from ..... if (DB2ПЕРЕМЕННАЯ>0) then ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 09:20 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Для количества Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:03 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Это понятно, но два раза запрос делать не охота, потому что один запрос может дорого стоить... Нет ли просто глобальной переменной, которая возврщает кол-во записей последнего стейтмента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:30 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Что вы хотитес результатом запроса сделать? Обработать каждую запись в курсоре? Просто получить кол-во записей? В SQL процедурах нельза просто написать select и все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:36 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
В оракле есть переменная SQL%rowcount. А в MSSQL - @@rowcount, А в DB2 ? Это все проделываю в хранимке ----------------------- select .... if db2rowcount>0 then select ..... set ..... ... else select .... set .... end if; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:53 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
[quot Ilhom1976]В оракле есть переменная SQL%rowcount. А в MSSQL - @@rowcount, А в DB2 ? Это все проделываю в хранимке ----------------------- select .... [/quote] В такой форме select вернёт 1 запись. если же нужна обработка набора записей - Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 11:48 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Оригинально Ну, а если всерьез? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 12:22 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Ilhom1976В оракле есть переменная SQL%rowcount. А в MSSQL - @@rowcount, А в DB2 ? Это все проделываю в хранимке ----------------------- select .... if db2rowcount>0 then select ..... set ..... ... else select .... set .... end if;Вопросы всерьез: Покажите все-таки на примере, что делает этот код. Как связан внешний селект с внутренними операциями? Желательно с указанием самих операторов полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 12:27 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Обратите внимание на wwrowcount!!! И проясните пож. на счет SQLCODE... Как ее проинициализировать ? ---------------------------- CREATE PROCEDURE GET_KREDAKTKVIT( IN widkvit INT,out retval double ) RESULT SETS 1 LANGUAGE SQL BEGIN declare widosv int; declare wmes int; declare wgod int; declare wkvitsana date; declare wkvitsumma double; declare wsumkredkvit double; declare wsaldo_k_old double; declare widab int; declare wdate_ date; declare widosv1 int; declare wsum_kredakt1 double; declare SQLCODE int; declare wwrowcount int; declare wsumma1 double; declare cur_osvs cursor for select a.id from osv a right join (select month(b.ds) as mes1,year(b.ds) as god1 from tarif b where (b.ds is null or b.ds>=wkvitsana) and (b.ds is null or b.ds<=wdate_)) c on a.mes=c.mes1 and a.god=c.god1 where a.idab=widab order by a.id ; set wsumkredkvit=0; select date(a.sana),a.summa,b.mes,b.god,a.idosv,b.idab into wkvitsana,wkvitsumma,wmes,wgod,widosv,widab from kvit a left join osv b on a.idosv=b.id where a.sana is not null and a.summa<>0 and a.summa is not null and a.id=widkvit; if wwrowcount>0 then set wdate_=lastdate(wmes,wgod); set wsum_kredakt1=0; open cur_osvs; FETCH FROM cur_osvs into widosv1; WHILE (SQLCODE != 100) DO call get_kredakt_p(widosv1,wkvitsumma,wsumma1); set wsum_kredakt1=wsum_kredakt1+wsumma1; FETCH FROM cur_osvs into widosv1; END WHILE; CLOSE cur_osvs; set wsumkredkvit=wsum_kredakt1; end IF; SET retval=wsumkredkvit; END; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 12:54 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Ilhom1976Обратите внимание на wwrowcount!!! И проясните пож. на счет SQLCODE... Как ее проинициализировать ? select date(a.sana),a.summa,b.mes,b.god,a.idosv,b.idab into wkvitsana,wkvitsumma,wmes,wgod,widosv,widab from kvit a left join osv b on a.idosv=b.id where a.sana is not null and a.summa<>0 and a.summa is not null and a.id=widkvit; Как вы собираетесь результирующую таблицу неизвестного объема положить в одиночные переменные? Это работать не будет ни на одной РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 13:29 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
RomanSavelyev Как вы собираетесь результирующую таблицу неизвестного объема положить в одиночные переменные? Это работать не будет ни на одной РСУБД. Во первых - Там есть условие, во вторых она работала в MSSQL,Oracle и даже на DB2... Но суть не в этом.... Хорошо... Изначальный вопрос преформулируем так: Как определить "the number of rows affected by the last statement", Стейтментом может быть Select,update,insert,delete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 13:39 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Ilhom1976select date(a.sana),a.summa,b.mes,b.god,a.idosv,b.idab into wkvitsana,wkvitsumma,wmes,wgod,widosv,widab from kvit a left join osv b on a.idosv=b.id where a.sana is not null and a.summa<>0 and a.summa is not null and a.id=widkvit; Короче, этот запрос вернёт либо 0 записей, либо 1 запись, либо ошибку. Записей нет - SQLCODE 100 Больше 1 записи - выполнение будет аварийно прервано и SQLSTATE установлен в 21000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 13:49 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Ilhom1976[quot RomanSavelyev] Как определить "the number of rows affected by the last statement", Стейтментом может быть Select,update,insert,delete Для "select into" - это либо "запись есть", либо "записи нет", либо аварийное завершение по "зписи больше 1". Для update и delete Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 13:52 |
|
||
|
Row Count
|
|||
|---|---|---|---|
|
#18+
Ilhom1976Обратите внимание на wwrowcount!!! И проясните пож. на счет SQLCODE... Как ее проинициализировать ? ---------------------------- ... set wsumkredkvit=0; select date(a.sana),a.summa,b.mes,b.god,a.idosv,b.idab into wkvitsana,wkvitsumma,wmes,wgod,widosv,widab from kvit a left join osv b on a.idosv=b.id where a.sana is not null and a.summa<>0 and a.summa is not null and a.id=widkvit; if wwrowcount>0 then ... FETCH FROM cur_osvs into widosv1; ... end IF; SET retval=wsumkredkvit; END; 1. SELECT ... INTO перед if вернет ошибку, если возвратит больше 1 записи. Если запрос не вернет ни одной записи, то переменная SQLCODE (значение которой обновляется почти после каждой команды) сразу после выполнения SELECT INTO будет содержать значение 100. 2. правильно Код: plaintext После операций update, insert, delete кол-во строк может быть получено, если сразу после этой команды выдать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 14:17 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34525352&tid=1604587]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 319ms |

| 0 / 0 |
