powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Удаление таблицы
13 сообщений из 13, страница 1 из 1
Удаление таблицы
    #32191181
BodyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плз как в InterBase зделать проверочку:
Если таблица существует, то удалить ее.
Заранее благодарен.
...
Рейтинг: 0 / 0
Удаление таблицы
    #32191293
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через что работаешь с ИБ, в IBX
TIBDataBase для для этого можно воспользоваться
procedure GetTableNames(List: TStrings; SystemTables: Boolean = False)
а потом проверить наличие в TStrings есть или нет. (я бы так сделал), еще можно через системные таблы, но я стараюсь туда не лесть (так на всякий случай, не доверяю я пока сам себе :) )
...
Рейтинг: 0 / 0
Удаление таблицы
    #32191342
BodyaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно это запихать в скрипт который генерит таблицы. Т.е. проверку написать на SQL.
...
Рейтинг: 0 / 0
Удаление таблицы
    #32191367
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://ibase.ru/devinfo/sysqry.htm#1][Это должно натолкнуть на мысь]
...
Рейтинг: 0 / 0
Удаление таблицы
    #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
Удаление таблицы
    #32191510
Rimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это

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

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

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


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


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