| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Создать таблицу, если её нет |
| Автор: Peter 10.10.2007, 15:43 | ||
| Задача: создать таблицу T1, если её ещё нет в базе. MS SQL Server на запрос
1) Меняю INFORMATION_SCHEMA.TABLES на all_all_tables. 2) Перед IF ставлю EXEC (иначе "неизвестное начало команды..."). 3) Ставлю точки с запятой после каждой команды. 4) Вместо END пишу END IF. И всё равно: "после BEGIN не может стоять CREATE". Что делать? |
| Автор: Sqlninja 10.10.2007, 16:53 | ||
нельзя мешать DDL и pl/sql, используй динамический SQL
|
| Автор: batigoal 10.10.2007, 16:55 |
| Peter, сделай просто CREATE. Если таблица уже существует, Оракл не даст её создать, т.к. у тебя CREATE, а не CREATE OR REPLACE. |
| Автор: Peter 10.10.2007, 19:47 |
| Дело в том, что у меня программа соединяется с БД через ODBC. Та обёртка, которую я использую, в случае ошибки выкинет исключение, а его хотелось бы избежать. Если ничего другого не остаётся, придется просто писать CREATE и ставить пустой блок catch(...){}. |
| Автор: Peter 11.10.2007, 17:55 |
А как его вставить в программу на C++? |
| Автор: Sqlninja 12.10.2007, 13:32 |
| Причем тут уже С++?? Ты врроде хотел T-sql'ный блок переписать для Oracle? Вообще,это уже тема для отдельного топика,но... На самом деле логика примитивна настолько, что его проще переписать на С++, имхо. Главный смысл в запросе, который проверяет существование таблицы. |
| Автор: Filatov NA 12.10.2007, 18:14 | ||
Код, который тебе посоветовал товарищь, оборачиваешь в процедуру. А в С++ вызываешь стандартными методами. Кстате, для С++Builder есть очень замечательный компонент ODAC. |
| Автор: Peter 16.10.2007, 13:22 | ||
Сделал, как проще.
|