在描述oracle表的查询中,替换变量似乎失败

在描述oracle表的查询中,替换变量似乎失败,oracle,oracle11g,substitution,data-dictionary,Oracle,Oracle11g,Substitution,Data Dictionary,我试图在不使用descripe命令的情况下描述一个表,但我想将查询与。假设我有下表: --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

我试图在不使用
descripe
命令的情况下描述一个表,但我想将查询与。假设我有下表:

--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客户
产生:

Name          Null     Type         
------------- -------- ------------ 
CUSTOMER_ID   NOT NULL NUMBER(10)   
CUSTOMER_NAME NOT NULL VARCHAR2(50) 
CITY                   VARCHAR2(50) 
你知道怎么让替换变量在这里工作吗?谢谢。

我用它来处理一个问题。不太清楚到底发生了什么,因为@kordirko说这个问题对他来说是有效的。无论如何,为了让它为我工作(我使用的是SQL Developer版本4.0.3.16),我使用了bind变量,如下所示:

SELECT 
    column_name "Name", 
    nullable "Null?",
    concat(concat(concat(data_type,'('),data_length),')') AS "Type"
FROM user_tab_columns
WHERE table_name = :myv;

然后,我在enterbinds窗口的value字段中输入CUSTOMERS,查询执行得很好。如果有人知道为什么替换变量失败了,而绑定变量没有失败,这肯定会增加讨论的内容。

我询问了隐藏的假设,只是想确定一下——您真的在Oracle SQL*Plus中运行这段代码吗?或者在另一个客户机上?我在sql developer中运行了它。我在我的sql developer上测试了这个查询,我使用的是4.1.0.19版本,它运行得很好。您可以在WHERE条件中使用
UPPER
函数来更改字符的大小写:
WHERE table_name=UPPER('&myv')。您还可以附加:
从DUAL中选择UPPER(“&myv”)出于调试目的,为了检查输入的表名是否正确。嗯,我被难住了。使用
UPPER
似乎不会改变任何东西。我使用的是4.0.3.16版。“append”是指执行以下操作:
ACCEPT myv CHAR PROMPT'输入表名:'SELECT UPPER('&myv')