Конференция "Базы" » UniDAC выполняет только первый запрос [D7, SQLite]
 
  • -Юрий- (16.12.11 16:10) [0]
    В SQL запросах есть такое понятие - разделитель запросов - символ ";". Так вот, на сколько я знаю, SQLite позволяет выполнять несколько запросов в одном. Т.е.
    ExecSQL('create table t1 (a integer); insert into t1 values(20);');


    Но вот если я использую UniDac для записи в SQLite, то выполняется только первый запрос, а дальше отсекается. Почему так?
    UniDac версии 4.0.1
  • OW © (16.12.11 16:41) [1]
    а со следующей строки писать если?

    ExecSQL('create table t1 (a integer); #13#10 insert into t1 values(20);');
  • -Юрий- (16.12.11 18:03) [2]
    Тоже самое. Выполняет только первую часть.
  • SQLEX © (16.12.11 22:29) [3]
    а два select если?
  • SQLEX © (16.12.11 22:31) [4]
    или инсерт

    т.е., может он не понимает, что таблица уже есть?
    т.е. DDL и DML в одном
  • makz (17.12.11 12:16) [5]

    > В SQL запросах есть такое понятие - разделитель запросов
    > - символ ";"

    Разделитель запросов в запросах? Может речь все-таки о скриптах? Не уверен что этот компонент умеет отрабатывать скрипт.
  • Плохиш © (18.12.11 00:14) [6]

    > В SQL запросах есть такое понятие - разделитель запросов
    > - символ ";".

    Можно указать источник такого утверждения?
  • Ega23 © (18.12.11 11:28) [7]

    > В SQL запросах есть такое понятие - разделитель запросов
    > - символ ";".


    В некоторых SQL-диалектах есть такое понятие, как разделитель команд. Например, символ ";".
    Также в некоторых SQL-диалектах есть понятие, как разделитель пакета команд. Например, "GO".
    Некоторые DAC позволяют выполнять пакетные команды, некоторые - нет. Читайте описание конкретного DAC.
  • OW © (19.12.11 08:54) [8]
    а в некоторых можно писать ';'
    но именно DDL и DML нужно отделять особенной командой.
    >> Например, "GO".
    т.е.,
    вполне выполняются insert и следующий select
    но не выполняется create и следующий select
  • Ega23 © (19.12.11 10:37) [9]

    > но именно DDL и DML нужно отделять особенной командой.


    Не обязательно, это зависит от диалекта.


    > но не выполняется create и следующий select


    set nocount on
    create table #xxx(id datetime)
    insert into #xxx select getdate
    select * from #xxx
    drop table #xxx



    Что я делаю не так?  :)
  • OW © (19.12.11 10:46) [10]

    > Что я делаю не так?  :)


    >  это зависит от диалекта.
    :)
  • -Юрий- (19.12.11 11:26) [11]
    Думал, может какое свойство забыл установить, например, что-нибудь типа ExecuteDirect=True...
    Ладно, я пока поменял UniDAC на AnyDAC.
    AnyDAC выполняет все запросы, разделённые ";".
    Спасибо.
  • Ega23 © (19.12.11 11:52) [12]

    > Ладно, я пока поменял UniDAC на AnyDAC.


    Это нужно делать сначала.
    Формируешь требование, что нужно, чтобы "работало".
    Потом, исходя из них, смотришь разные DAC-и. Читаешь на sql.ru сравнительные характеристики и срачи, коих там на эту тему дофига.
    И только потом начинаешь писать продукт.
 
Конференция "Базы" » UniDAC выполняет только первый запрос [D7, SQLite]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]