powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает подключение к базе через ADO.Command
62 сообщений из 62, показаны все 3 страниц
Не работает подключение к базе через ADO.Command
    #39107455
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
Извините за ранее может за глупый вопрос. Но никак не получается самому разобраться. :(
На компьютер установил FB 1.5 и ODBC драйвер.

Есть вот такой код:

$ConnectString = "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=electro; DBNAME=" & $fDataBase
$adoConnect= ObjCreate("ADODB.Connection")
$adoCommand= ObjCreate("ADODB.Command")
$adoConnect.ConnectionTimeOut = 15
$adoConnect.CommandTimeout = 30
$adoConnect.Open($ConnectString)
$adoConnect.CursorLocation = 3
$adoCommand.ActiveConnection = $adoConnect

Вроде все нормально, НО почему ? $adoConnect.State = 1, а $adoCommand.State = 0
Из за этого никак не получается выполнить команды в базе...
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107571
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, может потому, что вы не только никак не проинициализировали объект ADODB.Command, задав такие свойства, как ActiveConnection, CommandText и т.п., но и не выполнили метод Execute, чтобы свойство State приняло какое-либо иное значение, кроме adStateClosed (0).
https://msdn.microsoft.com/en-us/library/ms675022(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/ms675546(v=vs.85).aspx
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107577
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, сори, не заметил
Код: sql
1.
$adoCommand.ActiveConnection = $adoConnect


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

Ув. Гуру, подскажите, есть ли что то на подобие в FB 1.5, как в FB 2.5 "MERGE"

Как переделать лучше всего эту строку под FB 1.5

Код: plsql
1.
2.
MERGE INTO "Coupons" USING "couponsFile" ON SUBSTRING("couponsFile"."code" FROM 1 FOR 12) = "Coupons"."Code"
WHEN MATCHED THEN UPDATE SET "Active" = 0;
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107725
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLКак переделать лучше всего эту строку под FB 1.5
Написать ХП. А в ней
Код: sql
1.
2.
FOR SELECT ... from "couponsFile" DO
   UPDATE "Coupons" ....


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107728
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
простите за мрак, а что такое ХП ?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107731
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLа что такое ХП ?
Хранимая Процедура.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107817
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, чую, вам очень нужно вкурить это:
http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird_Language_Reference_RUS.pdf
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107843
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructor,

Чую, что кто-то не научился читать вопрос, прежде чем давать ответ.
Каким боком релизные ноты по 2.5 помогут автору с 1.5?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107854
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

это не релизноты, а объединённая документация по SQL. Но таки да, немного запутать работающего с 1.5 она может, поскольку сильно больше информации содержит.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107910
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Да, это я ошибся, назвав руководство по языку релизными нотами.
Однако, как вытащить оттуда только 1.5 мне слабо представляется.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107973
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryЧую, что кто-то не научился читать вопрос, прежде чем давать ответ.
Каким боком релизные ноты по 2.5 помогут автору с 1.5?
Чую, что кое-кто прекрасно понимает, что LangRef вполне годится для общего ознакомления с Firebird SQL, но таки желает вновь устроить холивар. Или я не прав?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39107978
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда LangRef только начинали писать возник вопрос указывать ли для каждой фичи в какой версии она появилась. Но тогда бы документ превратился в макароны, и в итоге решили отказаться от этого.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108013
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorИли я не прав?
Да, неправ, как и всегда.

ТС явно указал что ему надо переделать merge из синтаксиса 2.5 для сервера 1.5, но ты сперва тычешь ему доку от 2.5, а потом снова начинаешь юлить когда тебе указывают на твою ошибку.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108413
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineТС явно указал что ему надо переделать merge из синтаксиса 2.5 для сервера 1.5, но ты сперва тычешь ему доку от 2.5, а потом снова начинаешь юлить когда тебе указывают на твою ошибку.
Если человек вообще не знаком с Firebird SQL, не понимает, что и как делает конкретный MERGE и потому не в состоянии самостоятельно заменить его на SP, что явно указывает на его необходимость хоть в каком-нибудь LangRef по Firebird SQL, то какого рожна ты пихаешь сюда свой абсолютно неуместный ответ на не тебе заданный вопрос?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108483
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
FOR SELECT "couponsFile"."code", "Coupons"."Code"
    FROM "couponsFile", "Coupons"
    WHERE "couponsFile"."code" = "Coupons"."Code"
    DO
      BEGIN
        UPDATE "Coupons"
        SET "Active" = 0
        WHERE "couponsFile"."code" = "Coupons"."Code"
      END*



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

Firebird SQL мало чем отличается от любого другого SQL.
Вывод о непонимании работы MERGE автора основан на чём?
Безапелляционные суждения, опять.

Видно же, что автору, скорее всего, просто нужно снести 1.5 и поставить 2.5, а не бросаться изучать PSQL.
Дальнейшая необходимость изучения процедурного языка зависит от неизвестных нам факторов.

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

при всем уважении, но снести ФБ 1.5 я не могу. =( к сожалению. а знаний не хватает, что бы реализовать подобное на ФБ 1.5 Поэтому пришел сюда.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108555
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLне получается. :(Прочти ещё, что такое терминатор.
И учти, что постоянное добавление / удаление ХП в базу это не правильный методологически подход.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108557
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

Кроме того, процедура не начинается с FOR SELECT.
Ну и, процедуру сперва нужно создать в базе, а потом её запустить.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108563
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

Или можешь не страдать над новыми конструкциями, применить тебе уже известные:
Код: sql
1.
2.
3.
update "Coupons" c
  set c."Active" = 0
  where exists (select 1 from "couponsFile" f where c."Code" = f."Code")
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108566
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery,
я так и сделал.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN
FOR SELECT "couponsFile"."code"
    FROM "couponsFile"
    INTO :TALON
    DO
     UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" = :TALON;
      END



Если убрать WHERE "Coupons"."Code" = :TALON; то по идеи всем записям в таблице "Coupons" будет изменено поле Active значение 0, но мне так не нужно, Мне нужно только тем, которые находят в "couponsFile". А с WHERE записи не меняются. =(
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108570
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

значит, нет ни одного "Coupons"."Code" = "couponsFile"."code"
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108573
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery,

Есть. это точно.

Таблица Coupons имеет поле Code Char(100), а таблица couponsFile это внешняя таблица и заполнена из текстового файла, и в ней поле code Char(12) может быть из за этого ? Только на TRIM что то ругается.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39108617
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL, вы уже поставили себе 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;
*/
...
Рейтинг: 0 / 0
Не работает подключение к базе через 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
Не работает подключение к базе через ADO.Command
    #39110808
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Код: sql
1.
WHERE "Coupons"."Code" = :TALON AND "Active" = 1;


Тестировать лениво, но вот у меня стойкое ощущение, что ВОТ ТАК как раз не надо.
Надо без использования индекса для уменьшения (опять же, возможных, т.к. мы не знаем, есть ли одинаковые) числа апдейтов
Код: sql
1.
WHERE "Coupons"."Code" = :TALON AND "Active"+0 = 1;
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110819
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Симонов Денис][quot JuniorSQL]
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
...
Забавно. Поглядел твой DDL. Возникло два вопроса:

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

1. Это осталось еще после того, как номера были 13 символов. Согласен он нафиг тут не нужен.
2. Селективность максимальная, т.е. все номера уникальны.
3. Время выполнения разное. например вот это:

[SRC sql]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



выполняется примерно ~20 секунд, но никаких изменений не делает.
а вот это:

BEGIN
FOR
SELECT SUBSTRING("couponsFile"."code" FROM 1 FOR 12)
FROM "couponsFile"
INTO :TALON
DO
UPDATE "Coupons"
SET "Active" = 0
WHERE SUBSTRING("Coupons"."Code" FROM 1 FOR 12) = :TALON;
END

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

DDL определение домена TName в студию.

Для того чтобы вот это

Код: plsql
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 SUBSTRING("Coupons"."Code" FROM 1 FOR 12) = :TALON;
END



работало быстро нужен вычисляемый индекс SUBSTRING("Code" FROM 1 FOR 12) в таблице Coupons, но 1.5 вычисляемых индексов не поддерживал
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110865
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисJuniorSQL,

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

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



На фига на STARTING WITH то заменил?

ну я в ответ на 18454771 посоветовал ( 18454825 )
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110869
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, понятно, значит в любом случаи нормальной скорости выполнения на среднем ПК не добиться ?

DDL, TName:
Код: sql
1.
2.
3.
CREATE DOMAIN "TName" AS
VARCHAR(100) CHARACTER SET WIN1251
COLLATE WIN1251;
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110874
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQL,

проверьте

Код: sql
1.
2.
3.
SELECT *
FROM Coupons
WHERE "Coupons"."Code" = '2334455535623' -- вместо этого поставить любой код из вашего файла который должен был бы обносится



возвращает хоть что-нибудь. Попробуйте ещё

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN
  FOR
      SELECT TRIM("couponsFile"."code")
        FROM "couponsFile"
        INTO :TALON
    DO
      UPDATE "Coupons"
        SET "Active" = 0
        WHERE "Coupons"."Code" = :TALON;
END



P.S. Меня терзают смутные сомнения что подобный вопрос уже был на sql.ru
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110902
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Все верно, тема прошлого года, но тогда я устал бороться с FB 1.5. сейчас же нужно все переделать, но увы, пока ничего не получается :(

А разве TRIM был в FB 1.5 ? я проверял вчера, вроде его не было в нем.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110905
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисJuniorSQL,

проверьте

[src sql]
SELECT *
FROM Coupons
WHERE "Coupons"."Code" = '2334455535623' -- вместо этого поставить любой код из вашего файла который должен был бы обносится


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

не было. Ну так подключи UDF.

Если прогу писали вы, то давно бы уже перешли на что посвежее.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110929
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLСимонов Денис, понятно, значит в любом случаи нормальной скорости выполнения на среднем ПК не добиться ?
Как вы сделали копию базы - обычным копированием файла или backup/restore утилитой gbak?
Атрибут "ForcedWrite" для вашей базы ON или OFF?
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110932
JuniorSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисJuniorSQL,

не было. Ну так подключи UDF.

Если прогу писали вы, то давно бы уже перешли на что посвежее.

ПО писал к сожалению не я. Так бы конечно. Не знаю как подключить UDF. =(
Ну мне собственно нужно просто передать эту строку, которая прекрасно работает на ФБ 2.5 под ФБ 1.5

Код: sql
1.
2.
MERGE INTO "Coupons" USING "couponsFile" ON SUBSTRING("couponsFile"."code" FROM 1 FOR 12) = "Coupons"."Code"
WHEN MATCHED THEN UPDATE SET "Active" = 0;



Код: 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" = :TALON;
END

Это вроде то что нужно, но почему то не устанавливает полю "Active = 0". Хотя номера в таблицах я проверил одинаковые есть.
...
Рейтинг: 0 / 0
Не работает подключение к базе через ADO.Command
    #39110936
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuniorSQLЭто вроде то что нужно, но почему то не устанавливает полю "Active = 0". Хотя номера в таблицах я проверил одинаковые есть.Если номер равен, то такого не может быть. Ищи отличия.
И, кстати, неплохо бы сделать INDEX OFF/ON для перестройки индекса по "Coupons"."Code"
Так, на всякий случай.
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не работает подключение к базе через ADO.Command
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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