Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизКак програмно поменять ограничитель SET TERM Найти похожие ветки
← →
Basic (2003-03-23 01:08) [0]Как програмно поменять ограничитель SET TERM
Надо внести в базу данных хранимую процедуру, но предварительно по правилам
поменять ограничитель, в ISQL все отладил, начал переносить в делфи, ругается
говорит синтаксическая ошибка
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 4
TERM
А без нее не пропускает создание хранимой процедуры, ей не нравится ;
текст в делфях
IBTransaction1.StartTransaction;
IBsql1.SQL.Clear;
IBsql1.SQL.add("SET TERM ^ ");
IBsql1.ExecQuery;
IBTransaction1.Commit;
← →
kaif (2003-03-23 02:27) [1]SET TERM это не команда SQL. Это команда для парсера скрипта, который разбирает скрипт на отдельные команды и посылает их по одной на сервер.
Так что для того, чтобы поместить процедуру на сервер нужно просто вписать ее текст (буквально) без всяких SET TERM в
IBSQL.SQL и выполнить ExecQuery.
Разумеется, это может быть текст только одной отдельно взятой процедуры. В конце текста терминатор не нужен.
Например, вписываешь:
CREATE PROCEDURE AAA
RETURNS(ID INTEGER, NAME VARCHAR(20))
AS
BEGIN
FOR SELECT ID,NAME FROM BBB
INTO :ID,:NAME
DO SUSPEND;
END
Здесь имеется терминатор ";" в тексте процедуры, но никакого терминатора в конце текста (типа ^), так как здесь только одна процедура и ее не нужно отделять от других, как это приходится делать в скрипте, состоящем из множества команд.
← →
Сергєєв Володимир (2003-03-23 04:22) [2]Просетапь IBX6.05 и не страдай ......
Там есть компонента (для любителей FireBird скажу кстати, что в OpenSource) TIBSQLParser & TIBSQLScript. Они уже все сами умеют делать.
← →
ruslanyd (2003-03-24 10:53) [3]а IB7, похоже, команда "set term" ушла в историю -
парсер поумнел :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c