powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает подключение к базе через ADO.Command
25 сообщений из 62, страница 2 из 3
Не работает подключение к базе через ADO.Command
    #39108766
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorмодератор не всегда банит именно тех, кто начал спор или офтоп обсуждение.Ты был забанен за генерацию тонн флуда в куче топиков, о чем прямо и сказано в причине блокировки. Как только я тебя забанил, флуд прекратился. Внезапно? Случайно?

Больше предупреждений, рассуждений и временных блокировок не будет.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108791
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLЕсть. это точно.Значит, в разных таблицах они в несравнимых видах.
Необходимо как-то к одному привести.

JuniorSQLТаблица Coupons имеет поле Code Char(100), а таблица couponsFile это внешняя таблица и заполнена из текстового файла, и в ней поле code Char(12) может быть из за этого ? Только на TRIM что то ругается.TRIM в 1.5 ещё не появился.
Кроме того, хвостовые пробелы не влияют на сравнение.
Покажи два одинаковых, с твоей точки зрения, кодов, с учётом пробелов.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108835
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее сделать перед сравнением CAST(field_name as char(xxx)) до большего XXX должно помочь.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108942
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Помочь в чём?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109002
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

В WHERE - у ТС просто char поля разной размерности ( правда я не помню, как FB 1.5 сравнивает такие поля - с учетом концевых пробелов или без)
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109008
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterя не помню, как FB 1.5 сравнивает такие поля - с учетом концевых пробелов
или без
Без. Это базовый функционал, не менялся ещё с тех времён когда даже не был выгравирован в
стандарте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109243
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Мне вот интересно, а в какой СУБД ты встречал сравнение чаров на равенство с учётом хвостовых пробелов?
Я не сомневаюсь, что в гугле ты сейчас быстренько таковые найдёшь, но вот действительно - когда ты с таким сталкивался в работе?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109274
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Wildsery!
You wrote on 20 ноября 2015 г. 16:42:13:

Wildsery> Мне вот интересно, а в какой СУБД ты встречал сравнение чаров на равенство с учётом хвостовых пробелов?
> Я не сомневаюсь, что в гугле ты сейчас быстренько таковые найдёшь, но вот действительно - когда ты с таким сталкивался в работе?

рЫгулярно!

SELECT * FROM DUAL
WHERE CAST('X' AS VARCHAR2(10)) = CAST('X ' AS VARCHAR2(10)) ;

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109320
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIRC, в Оракле для чар/варчар разные правила.
Плюс все это зависело от NLS_COMP и версии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39109663
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBConstructorJuniorSQL, вы уже поставили себе IBExpert ( http://www.ibexpert.com/rus/ibe_sfx.exe) для удобства работы с базой? Если нет - рекомендую!

Вы, случайно, не забыли про SUBSTRING ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SET TERM ^;
CREATE PROCEDURE TALON_UPDATE ()
AS
  DECLARE VARIABLE TALON CHAR(12) DEFAULT NULL;
BEGIN
  FOR
      SELECT SUBSTRING("couponsFile"."code" FROM 1 FOR 12)
        FROM "couponsFile"
        INTO :TALON
    DO
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" = :TALON;
END^
SET TERM ;^
COMMIT WORK;

/*
--= TEST =--
EXECUTE PROCEDURE TALON_UPDATE;
*/



после запуска этого, все зависло на 8 часов. не дождавшись пришлось убить процесс =( (делал все на копии)
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110004
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, фантастика!
Можно уточнить количество записей в этих двух таблицах и работала ли с копией базы еще какая-нибудь транзакция в момент, когда всё повисло?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110005
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, давайте по порядку - что, чем и как вы делали?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110013
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBConstructor,

в база состоит из двух таблиц собственно ничего сложного в базе нет. просто номера купонов. Таблица "Coupons" имеет больше 10млн записей, таблица "couponsFile" это внешняя таблица заполнена из текстового файла и в ней записей бывает по разному в данный момент ~21000.
Что я делал:
я создал ХП и в нее скопировал почти весь код с небольшими изменениями. прилагаю скрин.

скрин
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110018
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLDBConstructor,

в база состоит из двух таблиц собственно ничего сложного в базе нет. просто номера купонов. Таблица "Coupons" имеет больше 10млн записей, таблица "couponsFile" это внешняя таблица заполнена из текстового файла и в ней записей бывает по разному в данный момент ~21000.
Что я делал:
я создал ХП и в нее скопировал почти весь код с небольшими изменениями. прилагаю скрин.

скрин
Вычисляемый индекс, создай и будет счастье

зы. Если есть индекс по "Coupons"."Code" то мне кажется достаточно будет
Код: sql
1.
where "Coupons"."Code" starting with :Talon
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110274
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

индекс есть,
Код: sql
1.
where "Coupons"."Code" starting with :Talon


это не помогло, уже больше часа жду :(
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110384
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLm7m,

индекс есть,
Код: sql
1.
where "Coupons"."Code" starting with :Talon


это не помогло, уже больше часа жду :(

ну покажи DDL таблиц, запросы их план выполнения
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110689
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

DLL Coupons
DLL couponsFile
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110713
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLm7m,

DLL Coupons
DLL couponsFile

ну а запросы, и планы

зы. и желательно не картинками, а текстом в сообщении
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110717
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m, вот собственно запрос, больше в базе почти ничего нет.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN
  FOR
      SELECT SUBSTRING("couponsFile"."code" FROM 1 FOR 12)
        FROM "couponsFile"
        INTO :TALON
    DO
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" STARTING WITH :TALON;
END
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110727
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

где план вот этого запроса

Код: sql
1.
2.
3.
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" STARTING WITH :TALON;



На фига на STARTING WITH то заменил?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110731
Граур Станислав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отключить/нафиг удалить индекс для таблицы из 10 млн строк по полю со значениями 0/1 ?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110742
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

ради теста, так как с "=" все равно зависает все на очень долго.
З.Ы. не пойму про какой вы план говорите.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110774
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

план тот что нижней части окошечка выполнения SQL запроса твой IBE показывает. И план именно того запроса что я написал, а не вашей процедуры.

Сколько записей в couponsFile и в Coupons перед выполнением запроса.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110778
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Граур СтаниславОтключить/нафиг удалить индекс для таблицы из 10 млн строк по полю со значениями 0/1 ?
А может, разрешишь ему оставить, а то вдруг из 10 млн. Active=1 всего сотня-другая, и искать их нужно быстро?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110795
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN
  FOR
      SELECT SUBSTRING("couponsFile"."code" FROM 1 FOR 12)
        FROM "couponsFile"
        INTO :TALON
    DO
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" STARTING WITH :TALON;
END



Забавно. Поглядел твой DDL. Возникло два вопроса:

1. На кой ты используешь SUBSTRING("couponsFile"."code" FROM 1 FOR 12) если у тебя couponsFile и так длинной 12 символов?
2. "Coupons"."Code" походу не фига не ПК. Какова селективность индекса на этот филд?
3. Сколько по времени выполняется

Код: sql
1.
SELECT COUNT(*) FROM "couponsFile"



Ну и как вариант попробовать

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN
  FOR
      SELECT "couponsFile"."code"
        FROM "couponsFile"
        INTO :TALON
    DO
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" = :TALON AND "Active" = 1;
END
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает подключение к базе через ADO.Command
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]