|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Добрый день, просьба сильно не пинать я новичек. Пытаюсь выполнить скрипт в IBExpert. Запуская SQL EDITOR. Сам скрипт CREATE DOMAIN D_DATE AS DATE; CREATE DOMAIN D_INTEGER AS INTEGER; CREATE DOMAIN D_CHAR1 AS CHAR(1); CREATE DOMAIN D_CHAR2 AS CHAR(2); CREATE DOMAIN D_CHAR3 AS CHAR(3); CREATE DOMAIN D_CHAR4 AS CHAR(4); COMMIT; После второй строчки выдает синтаксическую ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:21 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXCREATE DOMAIN D_DATE AS DATE; ...... COMMIT; После второй строчки выдает синтаксическую ошибку. - в IBE для скриптов - есть специализированный редактор. - commit - после каждого DDL вsражения добавь - текст ошибки привести тоже не мешает ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:25 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXЗапуская SQL EDITOR.Запускай в Script Executive (Ctrl+F12) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:32 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMaster- commit - после каждого DDL вsражения добавьВ данном случае - это не нужный и даже вредный совет ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:39 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
dennis-redw_XXXЗапуская SQL EDITOR.Запускай в Script Executive (Ctrl+F12) ТОже не получилось запустить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:46 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasteredw_XXXCREATE DOMAIN D_DATE AS DATE; ...... COMMIT; После второй строчки выдает синтаксическую ошибку. - в IBE для скриптов - есть специализированный редактор. - commit - после каждого DDL вsражения добавь - текст ошибки привести тоже не мешает Текст ошибки Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, char 1. CREATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:48 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXX, Не там запускаешь скрипт... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:54 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
hvladDarkMaster- commit - после каждого DDL вsражения добавьВ данном случае - это не нужный и даже вредный совет А чем может навредить? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 10:55 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasterВ данном случае - это не нужный и даже вредный совет А чем может навредить?[/quote]Тормозами. Представь себе скрипт апгрейда БД не на 5 строк, а на 5К строк... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 11:22 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasteredw_XXX, Не там запускаешь скрипт... ctrl+F12 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 11:30 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
hvlad, Согласен, поспешил. Но не думаю, что у него 5К пользовательских доменов... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 11:31 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
так и в итоге как правильно то поступить? просто как залить скрипт) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 11:50 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXтак и в итоге как правильно то поступить? Если не в состоянии осилить IBExpert, используй isql. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 12:28 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasterА чем может навредить? Уже навредил. 1-я строка закоммитилась (вручную, видимо), и скрипт целиком уже не перезапустить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 13:11 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovedw_XXXтак и в итоге как правильно то поступить? Если не в состоянии осилить IBExpert, используй isql. не ну sql editor я запусить могу) и скопипастить скрипт. Просто не понятно в чем проблема ( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 14:09 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, Edw Xxx! You wrote on 30 июня 2015 г. 14:15:35: Edw Xxx> Просто не понятно в чем проблема ( поясняю для тупых (и особо одарённых тоже). разработчик IBExpert создал два раздельных окошка, в которых могут выполняться SQL-команды. одно из окошек он нарёк SQL-editor'ом и позволил оному исполнять только одиночные SQL-команды, в том числе SQL-запросы возвращающие набор данных. другое же окошко нарёк он Script Executive и дозволено было оному исполнять пакеты SQL-команд пачками, за исключением запросов возвращающих наборы данных. компрене ву? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 14:21 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXПросто не понятно в чем проблема ( В том, что в SQL Editor нельзя выполнять скрипты. Разве это не очевидно?.. А isql - утилита специально предназначенная для выполнения скриптов, ничего другого она не умеет, так что и запутаться негде. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 14:21 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXDimitry Sibiryakovпропущено... Если не в состоянии осилить IBExpert, используй isql. не ну sql editor я запусить могу) и скопипастить скрипт. Просто не понятно в чем проблема ( Не sql editor, а редактор скриптов. Уже несколько раз сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 14:22 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Проблема решилась запуском скрипта из консоли isql, скрипт залился без проблем. С ibexpert так и не заработал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:08 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
если человек идиот, то это надолго... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:09 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Мимопроходящийесли человек идиот, то это надолго... Почему оскорбляете? Возможно проблема в клиентcкой библиотеке ibexpert. База крутится на удаленной машине под linux. Скрипт сработал именно в консоли на linux. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:28 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, Edw Xxx! You wrote on 30 июня 2015 г. 16:30:55: Edw Xxx> Возможно проблема в клиентcкой библиотеке ibexpert . нет такой клиентской библиотеки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:31 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXМимопроходящийесли человек идиот, то это надолго... Почему оскорбляете? Возможно проблема в клиентcкой библиотеке ibexpert. База крутится на удаленной машине под linux. Скрипт сработал именно в консоли на linux. Криворукие линуксоиды. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:45 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
ZeroMQedw_XXXпропущено... Почему оскорбляете? Возможно проблема в клиентcкой библиотеке ibexpert. База крутится на удаленной машине под linux. Скрипт сработал именно в консоли на linux. Криворукие линуксоиды. Дык ibexpert стоит на винде. Походу тут спецы на ветке не кислые, если ibexpert работает без библиотеки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:50 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXX, Синтаксическая ошибка во второй строке (читай — после точки с запятой) однозначно указывает, что вы пытаетесь копипастить скрипт в не предназначенное для него окно. Об этом вам сказали в первом же ответном сообщении и повторяли много раз. Клиентская библиотека тут ни при чём, без неё вы бы даже не подключились к БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 16:54 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Я понял про разницу SQL Editor и Script Executive. Но я пытался запускать скрипт из Script Executive. Он не сработал все равно. Повторяю сработал только из под isql ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 17:02 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXX, "не сработал" - не бывает. Всегда пишется сообщение об ошибке. Ошибка "Token unknown - line 2, char 1. CREATE." из SQL Editor, он выполняет только по одной команде за раз. Script Execitive - выполняет много команд. В окне Script Executive нужно указать, в каком ОТКРЫТОМ соединении к БД нужно этот скрипт выполнять, если в самом скрипте нет первой команды connect. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2015, 17:31 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
В любом случае спасибо за разъяснения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 08:39 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXX, на самом деле эта ошибка скорее всего произошла из-за того что в первой строке у тебя разделителя команд (;) не было. Например вот такой скрипт даёт в точности такую ошибку как у тебя Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 09:33 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисedw_XXX, на самом деле эта ошибка скорее всего произошла из-за того что в первой строке у тебя разделителя команд (;) не было. Например вот такой скрипт даёт в точности такую ошибку как у тебя Код: sql 1. 2.
нет , выдает ошибку Сannot perform operation -- DB is not open ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:14 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Сори кажется нашел проблему ) Use current connection поставил галочку ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:16 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXX,визуализирую ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:18 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXСори кажется нашел проблему ) Use current connection поставил галочку Как долго мы тебя лечили.... Вот же выше по тексту Дима говорил -> http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1163742&msg=17834032 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:19 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Gallemaredw_XXXСори кажется нашел проблему ) Use current connection поставил галочку Как долго мы тебя лечили.... Вот же выше по тексту Дима говорил -> http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1163742&msg=17834032 Я новичек ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:20 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
edw_XXXЯ новичек ) Изучай https://yadi.sk/i/LpsYBf1PbxPF7 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:24 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
Почему нельзя одним блоком пульнуть создание БД, без всяких скриптов? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:25 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, потому что DDL не выполняется в рамках PSQL. Точнее выполнить можно, но тебе лучше не знать как. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:35 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Дениспотому что DDL не выполняется в рамках PSQL. Выполняется: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:45 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, ну вот так и делай у себя. Только другим не советуй. Удачи в написании скриптов execute block для обновления своих баз. Особенно весело будет создавать ХП через execute statement в которых строковые литералы есть. А уж если ещё перемешать с DML статментами вообще весело будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:51 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, Не, ну вот зачем глотать бильярдный шар? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:52 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов ДенисТочнее выполнить можно, но тебе лучше не знать как. Это вы меня потроллить чтоли решили? Не надо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:52 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, не надо советовать новичкам execute statement, когда не нужно, а то начнёт его лепить во все щели. А виноват кто будет? Посоветовавший. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:58 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис-, ну вот так и делай у себя. Только другим не советуй. Удачи в написании скриптов execute block для обновления своих баз. Особенно весело будет создавать ХП через execute statement в которых строковые литералы есть. А уж если ещё перемешать с DML статментами вообще весело будет. Я ничего не советую. Я удивился что оно не работает. Вы объяснили почему. Я вам показал что ваше объяснение не катит. Дальше вот эти ваши фантазии с весельем создавать ХП через execute statement. Ко мне какие претензии? Я наврал где-то? Или приукрасил? Или ввёл в заблуждение? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 12:58 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, оно и в Оракле не работает. Есть конечно СУБД где такое катит. Я вот сомневаюсь что через ES можно выполнить хотя бы два DDL оператора подряд между которыми есть хоть какая-нибудь зависимость. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:05 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, мынус! You wrote on 1 июля 2015 г. 13:06:26: мынус> Ко мне какие претензии? Я наврал где-то? Или приукрасил? > Или ввёл взаблуждение?усохни, промокашко. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:06 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, второе моё предложение как раз и касалось execute statement. А вы его зачем-то показали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:06 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисне надо советовать новичкам execute statement, когда не нужно, а то начнёт его лепить во все щели. А виноват кто будет? Посоветовавший. Я не советовал. Я лишь показал вам пример опровергающий ваш тезис. И вообще, если я о чём-нибудь спрошу, то большая просьба - выдавайте мне всю инфу по максимуму. Не нужно меня оберегать и на основании своих опасений и фантазий лишать меня инфы которую я прошу. А то я буду на основании своих опасений тоже лишать вас чего-нибудь :) И кто будет виноват? Я буду виноват, т.к. я лишаю вас инфы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:10 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов ДенисЯ вот сомневаюсь что через ES можно выполнить хотя бы два DDL оператора подряд между которыми есть хоть какая-нибудь зависимость. Тогда бы это был баг. Но слава богу этого бага нет: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:16 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, я не вас оберегаю, а новичка который задал вопрос. Хотя наверное моё второе предложение нужно было не тебе адресовать. Теперь по поводу почему в блоке нельзя. В FB изменения метаданных применяется по завершению транзакции. Поэтому когда мешаешь DDL с DML в одной транзакции операторы DML могут не увидеть изменения метаданных. execute block это DML оператор внутри которого исполняется PSQL код. Поскольку вот здесь можно написать и так Код: sql 1. 2. 3. 4. 5. 6.
то проще вообще не исполнять внутри execute block любые DDL операторы. Через execute statement есть дырка, но если там же выполнить ещё и DML операторы, то можно очень не кисло огрести. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:22 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисто проще вообще не исполнять внутри execute block любые DDL операторы. Через execute statement есть дырка, но если там же выполнить ещё и DML операторы, то можно очень не кисло огрести. Попытка : Код: plsql 1. 2. 3. 4. 5. 6. 7.
Приводит к: Код: plaintext 1. 2. 3. 4. 5.
С автономными транзакциями можно конечно более извращенно поизмываться, вот только занафига? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:27 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMaster, я думаю тоже не помогут. Потому что если DDL ты выполнил в автономке, а DML в основной транзакции, то кеш метаданных загружен на момент старта основной транзакции (или на момент старта блока), где таблички ещё нет. Поэтому я и говорю через ES конечно можно выполнить DDL, но тогда уж только его. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:35 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис Код: sql 1. 2. 3. 4. 5. 6.
Это же можно написать без execute block, просто в одной транзакции с клиента. Результат полагаю должен быть одинаковым. И там и там человек меняющий DDL таблицы и меняющий её данные обречён на неудачу. А кому нужен только DDL или только DML, тем придётся: - в случае с DML: написать один execute block или слать по одному запросу. - в случае с DDL: написать один execute block c execute statements или слать по одному запросу. Так что ничто не запрещено. Просто парсер в excute block не понимает DDL без execute statement. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:35 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, не просто не понимает. Его туда умышлено не вводили из-за глюков которые однозначно будут. С клиента тебе тоже придётся сделать 1 или более DDL операторов затем подтвердить транзакцию, а только потом делать DML уже в другой транзакции. Просто в редакторе скриптов IBE или в ISQL для DDL по умолчанию стартуется отдельная транзакция которая по завершении оператора тут же завершается. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 13:44 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов ДенисС клиента тебе тоже придётся сделать 1 или более DDL операторов затем подтвердить транзакцию, а только потом делать DML уже в другой транзакции. Ничто не мешает создать табличку A, и в той же транзакции сделать запись в табличку B, которая от A никак не зависит. Но опять же - это не то что интересно. Интересно пачкой выполнять именно DDL. Интерес в простоте работы со скриптами. Допустим скрипт лежит в файле. Как его сейчас применить например из кода Delphi? Нужно распарсить на стэйтменты. Для этого нужен парсер SQL, и не абы какой, а именно для FB нужной версии. Это сейчас. А как это делается в одну строчку, если бы в execute block не запретили DDL? вот так, например: Код: pascal 1.
Всё. Хотя если там в скрипте где-то есть "commit;", то кода получится лишь немногим больше, и опять же без парсенья SQL. Так что кто-то своим запретом малину всем портит :) Понятно что из благородных целей - с целью заботы о гражданах :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 14:44 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-Допустим скрипт лежит в файле. Как его сейчас применить например из кода Delphi? Нужно распарсить на стэйтменты. Для этого нужен парсер SQL, и не абы какой, а именно для FB нужной версии. Выдыхай... Код: pascal 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:00 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, блин я такой парсер даже на PHP писал. Ничего там сложного нет. Ибо парсить команды до основания не надо. Достаточно найти разделить ну и чуть посложней повозиться с SET TERM, а также с игнором разделителей в строках и комментах. Причём это мало зависит от версии сервера. Вот сделать это без SET TERM чуть сложнее. Там как раз зависимость от версии может проявится. Ибо в FB3 есть CREATE/ALTER PACKAGE/FUNCTION которых в 2.5 не было. Но тоже можно, в IBE ведь сделали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:02 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
- Нужно распарсить на стэйтменты. Для этого нужен парсер SQL, и не абы какой, а именно для FB нужной версии. никакой парсер не нужен. Достаточно из потока текста выколупывать конструкции между разделителем N, который по умолчанию ";", и меняется по set term. Никаких других конструкций кроме set term распознавать не надо, вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:02 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdv, строки и комменты ещё надо, чтобы игнорировать разделители в них ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:04 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdvникакой парсер не нужен. Достаточно из потока текста выколупывать конструкции между разделителем N, который по умолчанию ";", и меняется по set term. Никаких других конструкций кроме set term распознавать не надо, вообще. Кроме SET TERM есть еще кучка SET'ов, а также CONNECT/CREATE DATABASE. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:13 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMaster-Допустим скрипт лежит в файле. Как его сейчас применить например из кода Delphi? Нужно распарсить на стэйтменты. Для этого нужен парсер SQL, и не абы какой, а именно для FB нужной версии. Выдыхай... Код: pascal 1. 2.
SQLScript - это что? Вот такой скрипт, сгенерённый IBExpert-ом он поймёт? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
А тот же самый, но без SET TERM-ов он распарсит? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:50 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-А если сюда добавить конструкций из FB 4.0? Где взял? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:59 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
балабол Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 15:59 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-SQLScript - это что? Вот такой скрипт, сгенерённый IBExpert-ом он поймёт? А тот же самый, но без SET TERM-ов он распарсит? А если сюда добавить конструкций из FB 4.0? - TIB_Script от ИБО - внутри есть парсер - его хватает за глаза (и парсер не особо навороченный, кстати) - Поймет - будет FB 4.0 - поймет и его ;) [sarcasm on] P.S. Вот правда если скрипт разбавить конструкциями от Oracle вперемешку с MSSQL - то да, облом выйдет ;( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:12 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис-А если сюда добавить конструкций из FB 4.0? Где взял? Зачем ты меня троллишь таким вопросом? 4.0 если выйдет, то там наверняка будут новые языковые конструкции. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:12 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, блин что там сложного то? Есть несколько типов команд: 1. SET TERM переключает терминатор (работает с незапамятных времён) 2. операторы в которых нет операторных скобок BEGIN...END. Таких большинство 3. операторы с операторными скобками CREATE/ALTER PROCEDURE/FUNCTION/PACKAGE/TRIGGER + EXECUTE BLOCK 4. спец команды, не являющиеся операторами CONNECT, SET DIALECT ... их надо обрабатывать отдельно Так вот весьма высока вероятность что в новой версии появятся команды из группы 2. Для них вообще ничего переделывать не придётся. Очень мала что из группы 3. Если работаем через SET TERM то и для них переделывать не придётся. Группы 1 и 4 не являются частью операторов FB, а являются расширениями конкретного клиента исполняющего скрипт. Поэтому на них пофиг. Можешь им сам синтаксис придумать любой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:30 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMaster - TIB_Script от ИБО - внутри есть парсер - его хватает за глаза (и парсер не особо навороченный, кстати) Ну тогда дай ссылку, чтобы мы все смогли осчастливиться :) Хотя смотрю что продукт платный, и разработчик является членом Firebird Foundation и все дела. Так что можно обойти отсутствие запрещённого функционала у FB, просто покупкой этого функционала у члена Firebird Foundation. Что-то меня понесло не туда... Или наоборот туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:38 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисблин что там сложного то? Есть несколько типов команд: 1. SET TERM переключает терминатор (работает с незапамятных времён) C SET TERM вообще никаких проблем нет. С ним всё просто. Но он не часть языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:42 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-Так что можно обойти отсутствие запрещённого функционала у FB, просто покупкой этого функционала у члена Firebird Foundation. Дык тут все просто - качаешь исходники FB с запрещенным функционалом, выдираешь оттуда запрещенный парсер, адаптируешь под свои нужды, получаешь НЕзапрещенный парсер, раздаешь всем и каждому - профит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 16:48 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис4. спец команды, не являющиеся операторами CONNECT, SET DIALECT ... их надо обрабатывать отдельно дискуссия начинает уходить в космос, потому что исходно "минус" сказал про "как выполнить скрипт обновления своей БД из Дельфи". Так что база своя, connect не нужен, set dialect не нужен, и никакой другой set кроме term не нужен. -C SET TERM вообще никаких проблем нет. С ним всё просто. Но он не часть языка. правильно. Это конструкция ISQL. А ISQL что, парсит конструкции DML/DDL Firebird? Хрен там! Вы просто API не знаете. Достаточно "выкусить" оператор из разделителей, вызвать prepare, и получить, что это - DML (вплоть до select/insert/update/delete...) или DDL. Прекратите валять дурака. для парсинга скрипта никаких специфических конструкций языка знать не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:05 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
to all какой-то апофеоз. Firebird не умеет выполнять скрипты. Он умеет выполнять единичные операторы. Firebird так устроен. isql - может выполнять скрипты, разделяя скрипт на отдельные операторы. isql не умеет выполнять DDL/DML, потому что из выполняет Firebird. Аминь. ISQL не является Firebird-ом, и наоборот. Пусть еще кто-нибудь скажет, что ISQL от Firebird 1.5 не умеет выполнять скрипты для Firebird 3.0 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:12 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdvТак что база своя, connect не нужен, set dialect не нужен, и никакой другой set кроме term не нужен. set term тоже нафиг не нужен. У меня разделитель, например, гвоздиком прибит в значение "^". kdvдля парсинга скрипта никаких специфических конструкций языка знать не нужно. Как минимум две конструкции знать нужно: delimited литералы и комментарии. Остальное действительно пофиг. "Это я тебе, голуба, говорю как краевед." (с) ЛФ Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:13 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
- Код: sql 1. 2. 3. 4. 5.
Почему нельзя одним блоком пульнуть создание БД, без всяких скриптов? Оно вам не нужно. Вам нужно выполнять стейтменты по одному, или воспользоваться чужим кодом который парсит скрипт и дальше выполняет стэйтменты по одному. Вот как вам нужно. Я лучше знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:29 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, если оно будет выполняться с глюками, то действительно не нужно. Я уж лучше через isql выполню скрипт. Да, да в виде тех отдельных статментов с разбитых по разделителю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:35 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovset term тоже нафиг не нужен. У меня разделитель, например, гвоздиком прибит в значение "^". Если гвоздиком прибить что-нибудь вроде "===!!!-----@@THIS_IS_TERMINATOR@@-----!!!===", то и литералы с комментариями пофигу будут :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:38 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdvкакой-то апофеоз. Firebird не умеет выполнять скрипты. Он умеет выполнять единичные операторы. Firebird так устроен. Вот. А еще Firebird умеет выполнять execute block. Но не умеет выполнять в нём DDL. Верней умеет, и корректно, но только через execute statement. Собственно это ядро беседы которую я начал и которая мне на самом деле интересна и полезна. И даже код на Delphi привёл, как было бы просто если бы execute block не ленился и выполнял DDL. Но собеседники цепляются за частности и уводят действительно в космос. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:39 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-execute block. Но не умеет выполнять в нём DDL. Верней умеет, и корректно, но только через execute statement. я бы счел это дырой. еще раз спрошу - вы знаете, как isql выполняет DDL в режиме set autoddl, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:42 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdv-execute block. Но не умеет выполнять в нём DDL. Верней умеет, и корректно, но только через execute statement. я бы счел это дырой. еще раз спрошу - вы знаете, как isql выполняет DDL в режиме set autoddl, например?не знаю и знать не хочу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:47 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
кац алапый мишьконе знаю и знать не хочу ну и нафиг. просто некоторые тут хотят чтобы им вообще все рассказали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:49 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 1 июля 2015 г. 17:50:53: Kdv> ну и нафиг. просто некоторые тут хотят чтобы им вообще все рассказали.не понимаю я вас, граждане. тупое тро-ло-ло ходит на форум развлекаться, а вы вокруг него политэсы хороводом водите. идёт оно в нах! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 17:51 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdvвы знаете, как isql выполняет DDL в режиме set autoddl, например? Нет. У себя в приложении я создаю пустую базу и потом в одной транзакции делаю несколько сотен DDL-стэйтментов (таблицы, процедуры, триггеры). Потом в следующей транзакции заливаю данные. И в ещё одной транзакции создаю констрейнты и индексы (тоже несколько сотен). С точки зрения скорости был бы рад поместить DDL-стэйтменты первого и третьего шагов в два execute block. А потом быть может вынес бы первый и третий блоки в отдельные файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:05 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, (затаив дыхание) Кхм. А обновление структуры базы в уже работающих инсталляциях как происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:10 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, а вот в оракле все DDL статменты автоматически оборачиваются транзакциями. Причём получается что один статмент одна транзакция. И ничего особо не орут. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:11 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисв оракле все DDL статменты автоматически оборачиваются транзакциями Поэтому у них нет проблем со смешиванием DDL и DML в одной транзакции: оно просто невозможно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:20 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Мимопроходящийне понимаю я вас, граждане. тупое тро-ло-ло ходит на форум развлекаться, а вы вокруг него политэсы хороводом водите. идёт оно в нах! Мимопроходящий, я спрашиваю вещи которые мне интересны. И вроде в спокойном конструктивном ключе. Вы похоже что-то своё видите, чего я вовсе не пишу или не подразумеваю. Если же у вас есть что-то конкретное к моим высказываниям, то я прошу вас указать это так чтобы мне было понятно на что вы так реагируете, чтобы у меня хотя бы был шанс осознать косяк и больше так не делать. Я вижу что вас цепляет периодически, но не могу уловить что именно цепляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:22 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-И вроде в спокойном конструктивном ключе. Ага, щаззз жо... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:24 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-> Собственно это ядро беседы которую я начал и которая мне на самом деле интересна и полезна. -> Но собеседники цепляются за частности и уводят действительно в космос. Угомонись уже, пока по-хорошему просят. И зарегистрируйся, наконец. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:31 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
miwaonlineА обновление структуры базы в уже работающих инсталляциях как происходит? При старте смотрится номер версии структуры в БД и она обновляется до нужной. Обычно по транзакции на версию. Иногда приходится в одной версии делать несколько транзакций, когда нужно и структуру и данные изменить. Говорю "приходится", потому что операция по сути атомарной должна быть, и заканчиваться увеличением номером версии и коммитом, но FB не умеет в одной транзакции DDL и DML по одной таблице. Косяк, но ничего не поделаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:33 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, мынус! You wrote on 1 июля 2015 г. 18:35:50: мынус> FB не умеет в одной транзакции DDL и DML по одной таблице. > Косяк, но ничего не поделаешь. и Оракл не умеет в одной транзакции DDL и DML по одной таблице. и DB2 не умеет в одной транзакции DDL и DML по одной таблице. косяк, но ничего не поделаешь. его курить нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:36 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-Косяк, но ничего не поделаешь. нет в жизни счастья. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:38 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Дениса вот в оракле все DDL статменты автоматически оборачиваются транзакциями. Причём получается что один статмент одна транзакция. И ничего особо не орут. Да как бы можно вообще без транзакций жить. У меня был опыт работы в конторе на ADS, где таблицы на десятки миллионов записей в месяц и никаких транзакций, и даже FK нет. Производство и бухгалтерия. Высоконагруженное. Как они жили? Так что можно всяко. Вы кстати опять на Oracle пальцем показываете как на авторитет. Я только логики не понимаю. Мало ли у кого где косяки. Нам вроде как свои косяки должны быть интересны. Зачем прятать свои косяки чужими? Типа на их фоне не так заметно? :) Вобщем если вы поясните ваше аппелирование к Oracle, то я возможно стану понимать вас лучше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:50 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-При старте смотрится номер версии структуры в БД и она обновляется до нужной. Обычно по транзакции на версию. Я еще разок уточню - как именно "обновляется"? Откуда комманды для обновления берутся? По-другому сформулирую. Я правильно понимаю, что в программе есть много-много вшитых строк со всякими dml/ddl и весь этот плач Ярославны касается их правильного наката из программы в базу? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:54 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
miwaonline> в программе есть много-много вшитых строк со всякими dml/ddl Ну шож ты совсем-то плохо о них думаешь? Наверное, в файлике(ах) рядом где-нибудь лежат. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:58 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамmiwaonline> в программе есть много-много вшитых строк со всякими dml/ddl Ну шож ты совсем-то плохо о них думаешь? Наверное, в файлике(ах) рядом где-нибудь лежат. Перечитывая топик, я уже не знаю, что думать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:59 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Мимопроходящийи Оракл не умеет в одной транзакции DDL и DML по одной таблице. и DB2 не умеет в одной транзакции DDL и DML по одной таблице. Как их написали, так они и работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 18:59 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
kdv-Косяк, но ничего не поделаешь. нет в жизни счастья. Нет чтобы сказать: "да, слушай, действительно тут было бы удобно атомарно" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:02 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-С точки зрения скорости был бы рад поместить DDL-стэйтменты первого и третьего шагов в два execute block. Это ж насколько там суровые DDL-стэйтменты, что на пустой базе они выполняются так долго, что их взжелается ускорить? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:11 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-Нет чтобы сказать: "да, слушай, действительно тут было бы удобно атомарно" :) Сказать так, конечно, можно, а толку-то? Я вот, например, даже примерно представляю как это можно сделать. Но объём работы таков, что заниматься ею ради такого мизерного выхлопа как "удобство", лично у меня нет ни малейшего желания. А у тебя? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:17 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, понимаешь ли там это косяком никто не считает. Почему мы должны? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:22 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
miwaonline-При старте смотрится номер версии структуры в БД и она обновляется до нужной. Обычно по транзакции на версию. Я еще разок уточню - как именно "обновляется"? Откуда комманды для обновления берутся? По-другому сформулирую. Я правильно понимаю, что в программе есть много-много вшитых строк со всякими dml/ddl и весь этот плач Ярославны касается их правильного наката из программы в базу? Не правильно вы понимаете. Вообще разговор не про мою программу. Я не очень сейчас понимаю куда я попал и в какую роль меня пытаются поставить. Тут форум по FB. Тут кроме пользователей тусуются разработчики, которым, как я полагаю небезинтересен Firebird. Небезинтересен с моей точки зрения он им по следующим направлениям: - правка багов - развитие функционала - удобство использования - общая здоровая ситуация в community Так вот, видя что пришёл человек с конкретной задачей (см. первый пост топика), и что ему в качестве решения предлагается выполнить скрипт в IBE, и у него не сразу получилось т.к. он новичок, я подумал: "а почему никто не предлагает execute block? Это же естественно, просто, и прям то что нужно пользователю". А оказыватся у execute block есть нюанс. Для меня ясно как божий день, что если бы этого нюанса не было, то куча пользователей с подобными вопросами была бы "happy". Я решил что нужно бы обратить внимание на этот нюанс и что его отсутствие было бы желательным для пользователей. В ответ получил то что получил. И это уже не в первый раз. Вот так это с моей точки зрения выглядит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:35 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, мынус! You wrote on 1 июля 2015 г. 19:40:40: мынус> Вот так это с моей точки зрения выглядит. на тебя торжественно возложен нефритовый жезл. зы: усохни, промокашка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:40 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-я подумал: "а почему никто не предлагает execute block? Это же естественно, просто, и прям то что нужно пользователю". Хренасе понятие о "естественности". isql - вот это естественно. А EB с ES внутри это натуральная проктостоматология. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:48 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
- ... т.к. он новичок , я подумал: "а почему никто не предлагает execute block? Это же естественно, просто, и прям то что нужно пользователю". вот поэтому и не предлагали ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:53 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, не предлагали потому, что знали что не работает. А вот предлагать то что не работает как то неправильно. Не считаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 19:55 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov-Нет чтобы сказать: "да, слушай, действительно тут было бы удобно атомарно" :) Сказать так, конечно, можно, а толку-то? Я вот, например, даже примерно представляю как это можно сделать. Но объём работы таков, что заниматься ею ради такого мизерного выхлопа как "удобство", лично у меня нет ни малейшего желания. А у тебя? Плюсы - не мой родной. И есть ощущение что я не смогу придерживаться шаблонов мышления которыми люди оперировали когда писали код 30 лет назад. Так что если я возьмусь, то получится отдельная ветка FB, из которой в результате будет выкинут весь мусор и код кторой будет переработан под мои внутренние стандарты, которые подразумевают 100% владение кодом, т.е возможность его изменения в любом направлении со 100% пониманием результатов таких изменений. Так что я не вариант :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:00 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, ну ладно попробую объяснить по другому. Код: sql 1. 2. 3. 4. 5.
как известно execute block это анонимный PSQL блок, т.е. хранимая процедура которая не хранится. Т.е. это должно быть эквивалентно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Теперь вспоминаем, что ХП в FB это не просто тупой кусок интерпретируемого кода. Что она компилируется в промежуточный язык BLR, который собственно и исполняется при вызове. Во время компиляции процедура проверяет правильность записанного в ней кода, в том числе и то что все объекты используемые в ней существуют. Так вот эта процедура не скомпилируется, если в ней производятся манипуляции с объектом метаданных которого не существует. execute block хоть нигде не хранится, но проходит тот же самый путь. Когда мы его препарируем появляется BLR (т.е как бы происходит компиляция на лету), который собственно и исполняется. Так понятней? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:08 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovХренасе понятие о "естественности". isql - вот это естественно. Новичкам обычно не удобно что старичкам естественно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:10 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис Вижу косяк, да. Вообще беседа оказалась поучительной. И то что я не увидел почему так делать нельзя мне говорит о многом. И то что другие не указали на этот косяк, т.к. видимо просто его не осознали пока Денис не написал (но кто сейчас в этом признается?) - это тоже мне говорит о многом. Спасибо всем за этот опыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:19 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Да закройте уже этот цирк одного актера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:27 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, если честно, то поначалу мне показалось что ты нас тут тролишь, поэтому с тобой так резко и говорили. Ну теперь, то я понимаю, что ты просто не въезжаешь в тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:30 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис-, ну ладно попробую объяснить по другому. Этот пример я приводил ровно 2 страницы флейма назад :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 20:51 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денисесли честно, то поначалу мне показалось что ты нас тут тролишь, поэтому с тобой так резко и говорили. Ну теперь, то я понимаю, что ты просто не въезжаешь в тему. Я никогда не троллю, как бы кому этого не виделось и не хотелось. Так что если вдруг увидите что я похоже "вот тут" троллю, то просто уточните у меня правильно ли я понимаю то, о чём говорю в "том месте" где вам кажется я троллю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 21:04 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasterСимонов Денис-, ну ладно попробую объяснить по другому. Этот пример я приводил ровно 2 страницы флейма назад :-) Если вы про этот 17837663 пример, то он совсем про другое. Денис говорит про принципиальную некомпилябельность стэйтмента потому как таблицы A нет на момент компиляции, а у вас пример про невыполнимость интсерта потому как таблицы нет на момент запуска. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 21:13 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
-, Найди 2 отличия :-) Пример демонстрирует ровно одно и то же. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 23:01 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMaster, не совсем. При использовании execute statement внутри execute block не проверяется существования объектов метаданных на этапе компиляции/препарирования. Только в момент исполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 23:14 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Симонов Денис, Угу, согласен... P.S. А такое прокатывает... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2015, 23:34 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Я бы сильно удивился, если б не прокатило ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 11:36 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
Hello, Гаджимурадов Рустам! You wrote on 2 июля 2015 г. 11:49:43: Гаджимурадов Рустам> Да закройте уже этот цирк одного актера.+500! кловун не смешной. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 11:50 |
|
Выполнить скрипт
|
|||
---|---|---|---|
#18+
DarkMasterА такое прокатывает... потому что это работает так же, как set autoddl в isql. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2015, 14:17 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562742]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
191ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 288ms |
0 / 0 |