Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Удаление таблицы / 13 сообщений из 13, страница 1 из 1
25.06.2003, 13:37
    #32191181
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Подскажите плз как в InterBase зделать проверочку:
Если таблица существует, то удалить ее.
Заранее благодарен.
...
Рейтинг: 0 / 0
25.06.2003, 14:41
    #32191293
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Через что работаешь с ИБ, в IBX
TIBDataBase для для этого можно воспользоваться
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False)
а потом проверить наличие в TStrings есть или нет. (я бы так сделал), еще можно через системные таблы, но я стараюсь туда не лесть (так на всякий случай, не доверяю я пока сам себе :) )
...
Рейтинг: 0 / 0
25.06.2003, 15:12
    #32191342
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Мне нужно это запихать в скрипт который генерит таблицы. Т.е. проверку написать на SQL.
...
Рейтинг: 0 / 0
25.06.2003, 15:24
    #32191367
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
http://ibase.ru/devinfo/sysqry.htm#1][Это должно натолкнуть на мысь]
...
Рейтинг: 0 / 0
25.06.2003, 15:50
    #32191417
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Системную таблицу я уже нашел. У меня проблема с синтаксисом. Создал процедуру:

CREATE PROCEDURE EXISTSTABLE ( TABLENAME CHAR(31) CHARACTER SET UNICODE_FSS)
RETURNS (BOOLEANEXISTS INTEGER)
AS
DECLARE VARIABLE I INTEGER;
begin
select count(*) from RDB$RELATIONS r
where r.RDB$RELATION_NAME = UPPER(:TableName)
into i;
if (i=1) then BooleanExists =1;
else if (i=0) then BooleanExists =0;
suspend;
end

а исползовать ее грамотно не могу. :(
код вызова:

if (execute procedure sysexiststable('TableTest') = 1) then drop table TableTest;

ругается на IF
...
Рейтинг: 0 / 0
25.06.2003, 16:54
    #32191510
Rimas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Это

> if (execute procedure sysexiststable('TableTest') = 1) then drop table TableTes

работать не будет, т.к. drop table TableTes нельзя вызывать из хранимых процедур и тригеров
...
Рейтинг: 0 / 0
25.06.2003, 17:08
    #32191528
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Да нестыковочка DDL и DML. Наверное всетоки прийдется на клиенте формировать скрипт и запускать.\
А что пишешь если не секрет, может можно както по другому
...
Рейтинг: 0 / 0
26.06.2003, 03:41
    #32191821
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
кстате меня терзают смутные сомнения что и эта конструкция рабочая...
"if (execute procedure sysexiststable('TableTest') = 1) then "
...
Рейтинг: 0 / 0
26.06.2003, 07:24
    #32191841
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Дак кто нибудь скажет как эту проверку реализовать на сервере. Или в InterBase этого зделать нельзя? :(
...
Рейтинг: 0 / 0
26.06.2003, 08:52
    #32191871
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Код: plaintext
1.
2.
3.
  SELECT BOOLEANEXISTS FROM EXISTSTABLE('TableTest') INTO :PARM;

  IF ( :PARM =  1 ) THEN DROP TABLE TableTest;


Только вот одно но есть ... TableTest - это имя таблицы, но никак не переменная.
...
Рейтинг: 0 / 0
26.06.2003, 08:53
    #32191872
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Так с чем трабл, с созданием, или с определением наличия таблы?
Если ты пишешь какойто инструмент, то почему нельзя организовать создание таблы с клиента через IBSQL, или формировать скрипт и потом выполнять его
...
Рейтинг: 0 / 0
26.06.2003, 11:15
    #32192050
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Проверить можно, создать таблицу нельзя
...
Рейтинг: 0 / 0
30.06.2003, 09:38
    #32194681
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Да, похлже придется с клиента делать. :(
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Удаление таблицы / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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