Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Вниз

проблема с SET TERM   Найти похожие ветки 

 
Klaus B.   (2006-06-13 19:57) [0]

Добрый день!
Имею проблему с созданием хранимой процедуры
работаю с Delphi 5.0 и InterBase 7.1
выкидывается ошибка при прохождении строки
SET TERM ^;
все перепробовал
ничего не получается


 
Klaus B.   (2006-06-13 20:20) [1]

Доподлино код выглядит так

ibtransaction1.active := true;
ibquery1.Close;
ibquery1.sql.Clear;
ibquery1.SQL.add("SET TERM ## ;");

ibquery1.SQL.add("CREATE PROCEDURE PRICE(P_INC INTEGER)");
ibquery1.SQL.add("AS BEGIN");
ibquery1.SQL.add("PR_INC := 1##");
ibquery1.SQL.add("SUSPEND##"); }
ibquery1.SQL.add("END##");

ibquery1.SQL.add("SET TERM ; ##");
ibquery1.execSQL;
ibtransaction1.commit;


 
starling13 ©   (2006-06-13 21:08) [2]


ibquery1.SQL.add("SET TERM ## ;");

ibquery1.SQL.add("CREATE PROCEDURE PRICE(P_INC INTEGER)");
ibquery1.SQL.add("AS BEGIN");
ibquery1.SQL.add("PR_INC := 1;");
ibquery1.SQL.add("SUSPEND;");
ibquery1.SQL.add("END##");

ibquery1.SQL.add("SET TERM ; ##");


Нет?


 
starling13 ©   (2006-06-13 21:10) [3]

ibquery1.SQL.add("SET TERM ## ;");

ibquery1.SQL.add("CREATE PROCEDURE PRICE(P_INC INTEGER)");
ibquery1.SQL.add("AS BEGIN");
ibquery1.SQL.add("PR_INC = 1;");
ibquery1.SQL.add("SUSPEND;");
ibquery1.SQL.add("END##");

ibquery1.SQL.add("SET TERM ; ##");


 
Sergey Masloff   (2006-06-13 21:41) [4]

А с каких пор IbQuery по многу команд разрешает выполнять?


 
Desdechado ©   (2006-06-13 22:19) [5]

вообще-то SET TERM предназначен строго для скриптов и скриптогонялок
как раз для разделения команд
а в квери только по одной команде писатьнадо, без всяких термов
создание процедуры - тоже команда, тольдо длииииинная


 
Виталий Панасенко   (2006-06-14 09:22) [6]

И вообще-то, в 7 его уже нет. насколько я помню из просмотренной документации.


 
kaif ©   (2006-06-14 11:25) [7]

1. IBQuery исполняет одновременно только одну SQL-команду.
2. Такой SQL-команды, как SET TERM, не существует.
3. Команду SET TERM вылавливает разборщик скрипта, например парсер программы IBConsole и им подобных.
4. Для того чтобы создать хранимую процедуру с помощью IBQuery достаточно вписать в его свойство SQL текст процедуры без всяких SET TERM и вызвать метод ExecSQL.
В тексте процедуры терминатором должен оставаться символ ";".
В конце команды никаких термигнаторов нре нужно - IBSQL и так выполняет только одну команду и поэтому в терминаторе не нуждается.

То есть:
ibtransaction1.active := true;
ibquery1.Close;
ibquery1.SQL.Text :=
 "CREATE PROCEDURE PRICE(P_INC INTEGER)")#13+
 "AS BEGIN"+#13+
 "  PR_INC = 1;"+#13+ //#13 - возврат каретки для красоты
 "  SUSPEND;"+#13+
 "END";
ibquery1.execSQL;
ibtransaction1.commit;

Однако для этих целей лучше использовать не IBQuery (это слишком избыточно), а IBSQL (компонент с минимальной функциональностью).
Все то же самое, только метод ExecQuery вместо ExecSQL.


 
kaif ©   (2006-06-14 11:27) [8]

ibquery1.Close - лишнее.


 
kaif ©   (2006-06-14 11:34) [9]

Кстати, в IBX 6.04 существует компонент IBScript.
Вот он, кажется, понимает SET TERM. Я не помню - я писал свой IBScript для этой цели.
Единственное, на что рекомендую обратить внимание, так это то, что:
1. Изменения метаданных должны производиться в отдельной транзакции от изменения данных.
2. Изменения метаданных как правило рекомендуется сразу подтверждать.


 
Desdechado ©   (2006-06-14 20:22) [10]

3. изменения метеданных часто требуют переподключения к БД, бо они кэшируются при подключении



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.046 c
15-1153419666
Доброже(в|л)атель
2006-07-20 22:21
2006.08.20
Network Boot кто делал? поделитесь опытом!


15-1153754078
VirEx
2006-07-24 19:14
2006.08.20
уже пора в СПБ?


15-1153660036
r@bbit
2006-07-23 17:07
2006.08.20
Алгоритм поиска ближайшего простого числа


15-1153674811
lookin
2006-07-23 21:13
2006.08.20
Как появляются НЛО: почти на примере...


15-1153486525
AlexanderMS
2006-07-21 16:55
2006.08.20
На чём написана DELPHI IDE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский