Я пытаюсь описать таблицу без использования команды DESCRIBE
, но хочу объединить запрос с переменная подстановки. Предполагая, что у меня есть следующая таблица:
--DROP TABLE customers CASCADE CONSTRAINTS PURGE;
CREATE TABLE customers
( customer_id number(10) NOT NULL,
customer_name varchar2(50) NOT NULL,
city varchar2(50)
);
Следуя сообщениям здесь и здесь, но добавляя переменную подстановки, я последующий:
ACCEPT myv CHAR PROMPT 'Enter a table name: '
SELECT
column_name AS "Name",
nullable AS "Null?",
concat(concat(concat(data_type,'('),data_length),')') AS "Type"
FROM user_tab_columns
WHERE table_name = '&myv';
Это возвращает пустую таблицу с соответствующими именами столбцов. Неважно, ввел ли я имя таблицы в строке ввода как CUSTOMERS или customers. Однако desc customers
дает:
Name Null Type
------------- -------- ------------
CUSTOMER_ID NOT NULL NUMBER(10)
CUSTOMER_NAME NOT NULL VARCHAR2(50)
CITY VARCHAR2(50)
Любая идея, как я могу заставить переменную подстановки работать здесь? Спасибо.
UPPER
в условии WHERE, чтобы изменить регистр символов:WHERE table_name = UPPER('&myv');
. Вы также можете добавить:SELECT UPPER('&myv') FROM DUAL;
в целях отладки, чтобы проверить правильность введенного имени таблицы или нет. - person krokodilko   schedule 23.05.2015UPPER
ничего не меняет. Я использую версию 4.0.3.16. Под добавлением вы подразумеваете что-то вроде:ACCEPT myv CHAR PROMPT 'Enter a table name: ' SELECT UPPER('&myv') FROM DUAL;
. - person sedeh   schedule 23.05.2015