powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выполнить скрипт
25 сообщений из 119, страница 2 из 5
Выполнить скрипт
    #38996164
edw_XXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понял про разницу SQL Editor и Script Executive. Но я пытался запускать скрипт из Script Executive. Он не сработал все равно. Повторяю сработал только из под isql
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996211
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edw_XXX,

"не сработал" - не бывает. Всегда пишется сообщение об ошибке.
Ошибка
"Token unknown - line 2, char 1.
CREATE."

из SQL Editor, он выполняет только по одной команде за раз. Script Execitive - выполняет много команд. В окне Script Executive нужно указать, в каком ОТКРЫТОМ соединении к БД нужно этот скрипт выполнять, если в самом скрипте нет первой команды connect.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996486
edw_XXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В любом случае спасибо за разъяснения.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996522
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edw_XXX,

на самом деле эта ошибка скорее всего произошла из-за того что в первой строке у тебя разделителя команд (;) не было. Например вот такой скрипт даёт в точности такую ошибку как у тебя

Код: sql
1.
2.
create table a(b int)
create domain d_int int;
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996724
edw_XXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисedw_XXX,

на самом деле эта ошибка скорее всего произошла из-за того что в первой строке у тебя разделителя команд (;) не было. Например вот такой скрипт даёт в точности такую ошибку как у тебя

Код: sql
1.
2.
create table a(b int)
create domain d_int int;



нет , выдает ошибку Сannot perform operation -- DB is not open
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996731
edw_XXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори кажется нашел проблему ) Use current connection поставил галочку
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996732
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edw_XXX,визуализирую
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996735
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edw_XXXСори кажется нашел проблему ) Use current connection поставил галочку
Как долго мы тебя лечили....
Вот же выше по тексту Дима говорил -> http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1163742&msg=17834032
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996739
edw_XXX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemaredw_XXXСори кажется нашел проблему ) Use current connection поставил галочку
Как долго мы тебя лечили....
Вот же выше по тексту Дима говорил -> http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1163742&msg=17834032
Я новичек )
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996743
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edw_XXXЯ новичек )
Изучай https://yadi.sk/i/LpsYBf1PbxPF7
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996747
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Код: sql
1.
2.
3.
4.
5.
execute block as
begin
  create table a(b int);
  create domain d_int int;
end


Почему нельзя одним блоком пульнуть создание БД, без всяких скриптов?
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996764
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

потому что DDL не выполняется в рамках PSQL. Точнее выполнить можно, но тебе лучше не знать как.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996785
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Дениспотому что DDL не выполняется в рамках PSQL.
Выполняется:
Код: sql
1.
2.
3.
4.
5.
execute block as
begin
  execute statement 'create table a(b int)';
  execute statement 'create domain d_int int';
end
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996787
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

ну вот так и делай у себя. Только другим не советуй. Удачи в написании скриптов execute block для обновления своих баз.
Особенно весело будет создавать ХП через execute statement в которых строковые литералы есть. А уж если ещё перемешать с DML статментами вообще весело будет.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996789
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

Не, ну вот зачем глотать бильярдный шар?
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996790
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов ДенисТочнее выполнить можно, но тебе лучше не знать как.
Это вы меня потроллить чтоли решили? Не надо :)
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996797
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

не надо советовать новичкам execute statement, когда не нужно, а то начнёт его лепить во все щели. А виноват кто будет? Посоветовавший.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996800
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Денис-,

ну вот так и делай у себя. Только другим не советуй. Удачи в написании скриптов execute block для обновления своих баз.
Особенно весело будет создавать ХП через execute statement в которых строковые литералы есть. А уж если ещё перемешать с DML статментами вообще весело будет.
Я ничего не советую. Я удивился что оно не работает. Вы объяснили почему. Я вам показал что ваше объяснение не катит.
Дальше вот эти ваши фантазии с весельем создавать ХП через execute statement.
Ко мне какие претензии? Я наврал где-то? Или приукрасил? Или ввёл в заблуждение?
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996810
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

оно и в Оракле не работает. Есть конечно СУБД где такое катит.

Я вот сомневаюсь что через ES можно выполнить хотя бы два DDL оператора подряд между которыми есть хоть какая-нибудь зависимость.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996811
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, мынус!
You wrote on 1 июля 2015 г. 13:06:26:

мынус> Ко мне какие претензии? Я наврал где-то? Или приукрасил?
> Или ввёл взаблуждение?усохни, промокашко.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996812
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

второе моё предложение как раз и касалось execute statement. А вы его зачем-то показали.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996820
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов Денисне надо советовать новичкам execute statement, когда не нужно, а то начнёт его лепить во все щели. А виноват кто будет? Посоветовавший.
Я не советовал. Я лишь показал вам пример опровергающий ваш тезис.
И вообще, если я о чём-нибудь спрошу, то большая просьба - выдавайте мне всю инфу по максимуму. Не нужно меня оберегать и на основании своих опасений и фантазий лишать меня инфы которую я прошу. А то я буду на основании своих опасений тоже лишать вас чего-нибудь :) И кто будет виноват? Я буду виноват, т.к. я лишаю вас инфы.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996825
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Симонов ДенисЯ вот сомневаюсь что через ES можно выполнить хотя бы два DDL оператора подряд между которыми есть хоть какая-нибудь зависимость.
Тогда бы это был баг.
Но слава богу этого бага нет:
Код: sql
1.
2.
3.
4.
5.
6.
execute block as
begin
  execute statement 'create table a(b int)';
  execute statement 'alter table a add f int';
  execute statement 'drop table a';
end
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996833
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,

я не вас оберегаю, а новичка который задал вопрос. Хотя наверное моё второе предложение нужно было не тебе адресовать.

Теперь по поводу почему в блоке нельзя. В FB изменения метаданных применяется по завершению транзакции. Поэтому когда мешаешь DDL с DML в одной транзакции операторы DML могут не увидеть изменения метаданных. execute block это DML оператор внутри которого исполняется PSQL код. Поскольку вот здесь можно написать и так

Код: sql
1.
2.
3.
4.
5.
6.
execute block as
begin
  create table a(b int);
  create domain d_int int;
  insert into a(b) values(1);
end



то проще вообще не исполнять внутри execute block любые DDL операторы. Через execute statement есть дырка, но если там же выполнить ещё и DML операторы, то можно очень не кисло огрести.
...
Рейтинг: 0 / 0
Выполнить скрипт
    #38996845
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисто проще вообще не исполнять внутри execute block любые DDL операторы. Через execute statement есть дырка, но если там же выполнить ещё и DML операторы, то можно очень не кисло огрести.

Попытка :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
execute block
as
begin
  execute statement 'create domain d_my_int2 integer';
  execute statement 'create table test0003(id d_my_int2)';
  execute statement 'insert into test0003 (id) values (123)';
end



Приводит к:
Код: plaintext
1.
2.
3.
4.
5.
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Table unknown.
TEST0003.
At line 1, column 13.

С автономными транзакциями можно конечно более извращенно поизмываться, вот только занафига?
...
Рейтинг: 0 / 0
25 сообщений из 119, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Выполнить скрипт
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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