0

我正在提供提示用户输入表名称的 SQL。此 SQL 将提供列名、数据类型、数据长度、数据精度的报告,并指示特定表是否允许空值。

这是我正在运行的查询:

SELECT employee_id, first_name, last_name
FROM employees
GROUP BY employee_id;

select department_id where employee_id = :table_name;


set echo

(select column_name, data_type, data_length,
data_precision, data_scale, nullable
from all_tab_columns
where table_name = 'employees'
order by column_name);

我得到一个窗口,用户应该在其中输入表名,但第二个 select 语句无法运行。它提出了ORA-00933: sql command not properly ended. 如果我单独运行第二个 select 语句,我会收到一条no data found消息。

4

2 回答 2

1

首先,您在此查询中缺少表名:

select department_id where employee_id = :table_name;

它应该是:

select department_id from employees where employee_id = :table_name;

第二

set echo

会给你一个错误:

SP2-0265: echo 必须设置为 ON 或 OFF

您必须为该命令添加ONOFF参数。例如 :

set echo ON;

更多:设置回声

第三:

select column_name, data_type, data_length,
data_precision, data_scale, nullable
from all_tab_columns
where table_name = 'employees'
order by column_name

也许 where 子句中的比较区分大小写。

尝试这个:

select column_name, data_type, data_length,
data_precision, data_scale, nullable
from all_tab_columns
where lower(table_name) = 'employees'
order by column_name
于 2013-03-24T06:45:03.130 回答
0

您的select department_id where employee_id = :table_name;

是错的。

该表将在from子句中指定。

谢谢

于 2013-03-24T03:33:43.463 回答