Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как можно определить, требуется ли имена столбцов помещать в кавычки / 11 сообщений из 11, страница 1 из 1
21.02.2022, 15:38
    #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
21.02.2022, 15:41
    #40135671
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно определить, требуется ли имена столбцов помещать в кавычки
TypucTКак можно определить, требуется ли имена столбцов помещать в кавычки при
генерации запросов?

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

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

замечательно, а как я могу узнать создан ли объект с кавычками?
И еще в моем примере, третье представление было созданно с кавычками, но использование кавычек в запросе не требуется. Селект отрабатывает без ошибок.
...
Рейтинг: 0 / 0
21.02.2022, 15:51
    #40135674
SY
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
21.02.2022, 15:52
    #40135675
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно определить, требуется ли имена столбцов помещать в кавычки
TypucT,

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

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

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

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


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

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

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

Их используй как есть. Если надо - настраивающий заключит в кавычки сам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.02.2022, 16:05
    #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
21.02.2022, 16:07
    #40135682
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно определить, требуется ли имена столбцов помещать в кавычки
Никто вменяемый регистрочувствительные имена в базе не делает. Извращенцы должны
страдать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.02.2022, 16:11
    #40135683
TypucT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как можно определить, требуется ли имена столбцов помещать в кавычки
Dimitry Sibiryakov

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


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

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


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