在描述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')代码>。