【发布时间】:2012-11-17 20:58:35
【问题描述】:
我正在尝试编写一个非常简单的 sql 脚本: 从 table_X 中选择 *; 如果有的话,我想在 oracle sqlplus 中查看结果。这些结果对于进一步分析很重要。 还要提一下,这取决于最初创建了多少表,因此 table_X 可能根本不在数据库中。但是我想避免在解析时出现错误,在上面运行该脚本时,table_X 不存在。
所以我试图将该 SQL 包装到一些 PLSQL 动态代码中,如下所示:
Define table_X="MY_TAB"
DECLARE
stmt_ VARCHAR2(2000);
exist_ number := 0;
CURSOR table_exist IS
SELECT 1
FROM user_tables
WHERE table_name = '&table_X';
BEGIN
OPEN table_exist;
FETCH table_exist INTO exist_;
CLOSE table_exist;
IF exist_ = 1 THEN
stmt_ := 'SELECT * FROM &table_X';
EXECUTE IMMEDIATE stmt_;
ELSE
dbms_output.put_line('This functionality is not installed.');
END IF;
END;
/
- 如果 MY_TAB 中有数据,为什么我看不到任何结果(记录)?我真的需要绑定一些列并使用 ex. dbms_output 能够看到一些信息吗?
- 是否有任何简单的方法来查询表而不会得到“ORA-00942:表或视图不存在” 如果该表不存在(最好只使用 SQL)?
提前致谢
【问题讨论】:
-
您是否尝试在脚本开头添加
set serveroutput on? adp-gmbh.ch/ora/sqlplus/serveroutput.html -
另外,你的问题 #2 应该移到一个完全独立的 StackOverflow 问题中,因为它与你的输出问题没有真正的关系。
标签: sql oracle dynamic binding plsql