Использование переменной Oracle PL / SQL вызывает ошибку в SQL-разработчике - PullRequest
0 голосов
/ 03 мая 2018

Я выполняю следующую инструкцию:

DESC &TBL_NAME;

Разработчик SQL предлагает 2 раза спросить значение TBL_NAME. После того, как я дважды ввожу значение, он сообщает:

DESC &TBL_NAME;
ERROR:                                                                                                                           
-------------------------------------------------------------------------------------------------------------------------------- 
ERROR: object  does not exist                                                                                                    

1 rows selected

Если я использую переменную знак "&" в других выражениях, все нормально. Он просто не работает с оператором "Desc".

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

& используется для обозначения переменной подстановки, которая принимает вводимые пользователем данные и возвращает строку, синтаксис DESCRIBE принимает имя таблицы / представления, которое не должно быть заключено в кавычки, как это делает строка.

DESCRIBE {table-Name | view-Name}

DESC & TBL_NAME == DESC "<'TBL_NAME'>"

desc "Employee";

Выход

desc "Employee"
ERROR:                                
------------------------------------- 
ERROR: object Employee does not exist 

Desc Employee;

Выход

desc Employee
Name       Null     Type          
---------- -------- ------------- 
CO_CD NOT NULL NUMBER(2) 
PAYEE_CODE NOT NULL VARCHAR2(7) 
PAYEE_NAME NOT NULL VARCHAR2(50) 
TIN1             NUMBER(3) 
TIN2             NUMBER(3) 
TIN3             NUMBER(3) 
TIN4             NUMBER(5) 
FIRST_NAME          VARCHAR2(30) 
MID_NAME          VARCHAR2(30) 
LAST_NAME          VARCHAR2(30) 
ACTIVE_TAG          VARCHAR2(1) 
USER_ID          VARCHAR2(12) 
UPDT_DT          DATE      
CREATE_DT          DATE      
UPDT_BY          VARCHAR2(15) 
EMAIL_ADDR          VARCHAR2(100) 

Примечание: & является эксклюзивным особенность SQL * Plus и не должна использоваться в SQL Developer.

Для справки: https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_five.htm#CACIFHGB

0 голосов
/ 03 мая 2018

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

select trim(COLUMN_NAME),trim(DATA_TYPE) from ALL_TAB_COLUMNS where TABLE_NAME = '&tn' order by column_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...