0

我试图在不使用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) 

知道如何让替换变量在这里工作吗?谢谢。

4

1 回答 1

0

我让它与绑定变量一起工作。不完全确定发生了什么,因为@kordirko 说该查询对他有效。无论如何,为了让它为我工作(我使用的是 SQL Developer 版本 4.0.3.16),我使用了绑定变量,如下所示:

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

然后我将 CUSTOMERS 输入到 Enter Binds 窗口的值字段中,查询执行得很好。如果有人知道为什么替换变量失败但绑定变量没有,那肯定会增加讨论。

于 2015-05-23T15:44:45.213 回答