powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как можно определить, требуется ли имена столбцов помещать в кавычки
11 сообщений из 11, страница 1 из 1
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135669
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, вопрос по оракл 12

Собственно вопрос:
Как можно определить, требуется ли имена столбцов помещать в кавычки при генерации запросов?

Пример:
3 Views
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE FORCE EDITIONABLE VIEW "VP_TEST_1" (NumberId, Message, "ABC-code") AS 
  SELECT
    1 as NumberId,
    'Text' as Message,
    'A' as "ABC-CODE"
    
    FROM DUAL;
    
  CREATE OR REPLACE FORCE EDITIONABLE VIEW "VP_TEST_2" ("NumberId", "Message", "ABC-code") AS 
  SELECT
    1 as NumberId,
    'Text' as Message,
    'A' as "ABC-CODE"
FROM
    dual;
        
  CREATE OR REPLACE FORCE EDITIONABLE VIEW "VP_TEST_3" ("NUMBERID", "MESSAGE", "ABC-CODE") AS 
  SELECT
    1 as NumberId,
    'Text' as Message,
    'A' as "ABC-CODE"
FROM
    dual;



Для второго представления я обязан использовать кавычки, иначе получу ошибку.
Код: plsql
1.
2.
3.
select * from VP_TEST_1 WHERE  NumberId  = 1;
select * from VP_TEST_2 WHERE "NumberId" = 1;
select * from VP_TEST_3 WHERE  NumberId  = 1;



Но такой запрос возвращает одинаковые характеристики всех трех столбцов кроме имени.
Код: plsql
1.
SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME like  'VP_TEST_%' AND COLUMN_NAME in ('NumberId','NUMBERID');



P.S.: мне нужно геренировать запросы в приложении. Представления генерируются свободно. И я не могу знать на старте, как они были созданы.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TypucTКак можно определить, требуется ли имена столбцов помещать в кавычки при
генерации запросов?

Кавычки требуются если объект был создан с кавычками. То есть его имя либо
регистрочувствительное (содержит символы нижнего регистра в системных вьюхах),
либо содержит запрещённые символы, либо является зарезервированным словом.

PS: Но поскольку речь идёт о генерации запросов, то проще заключать имена в
кавычки всегда если они берутся из вьюх, а не вводятся пользователем.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135672
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

замечательно, а как я могу узнать создан ли объект с кавычками?
И еще в моем примере, третье представление было созданно с кавычками, но использование кавычек в запросе не требуется. Селект отрабатывает без ошибок.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135674
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Кавычки требуются если объект был создан с кавычками.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> CREATE TABLE "TBL"("COLUMN1" NUMBER);

Table created.

SQL> INSERT INTO tBl(cOlUmn1) VALUES(1);

1 row created.

SQL>



SY.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135675
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TypucT,

если генерите программно (используя USER_TAB_COLUMNS) то заключайте в двойные кавычки

имена без кавычек приводятся к верхнему регистру

.....
stax
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135676
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

PS: Но поскольку речь идёт о генерации запросов, то проще заключать имена в
кавычки всегда если они берутся из вьюх, а не вводятся пользователем.


Ясно, я так и сделал, проблема во внешних настройках, в которых есть, в том числе, имена столбцов, а регистр для столбцов, которые не содержат запрещенные символы и не были заключены в кавычки, не учитывался. А если я заключаю, что-то в кавычки, нужно учитывать регистр. Минимум, что можно делать, это еще получать список столбцов из USER_TAB_COLUMNS, искать совпадение без учета регистра и использовать имена из таблицы.

Думал, это простое свойство, где-то хранящиеся, но видимо нет. Спасибо, Дмитрий за ответ.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135677
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Да это понятно, если использовался только верхний регистр и не было запрещенных символов, то можно использовать просто имя.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135678
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TypucTпроблема во внешних настройках, в которых есть, в том числе, имена столбцов

Их используй как есть. Если надо - настраивающий заключит в кавычки сам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135681
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Тоже выход, настраивали всего год, а не 20 лет, главное чтобы не послали в пешее:)

До кучи проверил:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  CREATE OR REPLACE FORCE EDITIONABLE VIEW "VP_TEST_4" ("NumberId", "NUmberId", "Message", "ABC-code") AS 
  SELECT
    1 as Nummer,
    0 as Nummer,
    'Text' as Message,
    'A' as "ABC-CODE"
FROM
    dual;
        
  CREATE OR REPLACE FORCE EDITIONABLE VIEW "VP_TEST_5" ("NUMBERID", "NUMBERID", "MESSAGE", "ABC-CODE") AS 
  SELECT
    1 as Nummer,
    0 as Nummer,
    'Text' as Message,
    'A' as "ABC-CODE"
FROM
    dual;



Четвертую вьюху сгенерировать можно, а пятую нет.
Соответственно, проверка настроек без учета регистра, так себе идея.
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135682
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто вменяемый регистрочувствительные имена в базе не делает. Извращенцы должны
страдать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как можно определить, требуется ли имена столбцов помещать в кавычки
    #40135683
TypucT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Никто вменяемый регистрочувствительные имена в базе не делает. Извращенцы должны
страдать.


Нет, страдают те, кто потом эти извращения дальше развивает. Я сам охренел от таких имен и все из-за использования расширенного функицонала через ':', типа "HIDDEN:COLUMNNAME". Хотя можно было испольховать '_'.

Всем спасибо, главное я понял, настройку эту просто так не получить.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как можно определить, требуется ли имена столбцов помещать в кавычки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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