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

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

работать не будет, т.к. drop table TableTes нельзя вызывать из хранимых процедур и тригеров
...
Рейтинг: 0 / 0
25.06.2003, 17:08:11
    #32191528
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Да нестыковочка DDL и DML. Наверное всетоки прийдется на клиенте формировать скрипт и запускать.\
А что пишешь если не секрет, может можно както по другому
...
Рейтинг: 0 / 0
26.06.2003, 03:41:46
    #32191821
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
кстате меня терзают смутные сомнения что и эта конструкция рабочая...
"if (execute procedure sysexiststable('TableTest') = 1) then "
...
Рейтинг: 0 / 0
26.06.2003, 07:24:37
    #32191841
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Дак кто нибудь скажет как эту проверку реализовать на сервере. Или в InterBase этого зделать нельзя? :(
...
Рейтинг: 0 / 0
26.06.2003, 08:52:40
    #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:48
    #32191872
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Так с чем трабл, с созданием, или с определением наличия таблы?
Если ты пишешь какойто инструмент, то почему нельзя организовать создание таблы с клиента через IBSQL, или формировать скрипт и потом выполнять его
...
Рейтинг: 0 / 0
26.06.2003, 11:15:09
    #32192050
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Проверить можно, создать таблицу нельзя
...
Рейтинг: 0 / 0
30.06.2003, 09:38:41
    #32194681
BodyaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление таблицы
Да, похлже придется с клиента делать. :(
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Удаление таблицы / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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