自己建一个查询:
SELECT MACHINE,PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
可以执行
但PLSQL里面不可以SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
报错:Compilation errors for PROCEDURE MONTE.WSP_SYSLOGError: PL/SQL: ORA-00942: table or view does not exist
Line: 17
Text: SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);Error: PL/SQL: SQL Statement ignored
Line: 17
Text: SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
SELECT MACHINE,PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
可以执行
但PLSQL里面不可以SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
报错:Compilation errors for PROCEDURE MONTE.WSP_SYSLOGError: PL/SQL: ORA-00942: table or view does not exist
Line: 17
Text: SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);Error: PL/SQL: SQL Statement ignored
Line: 17
Text: SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
解决方案 »
- OCILIB 中的OCI_PoolGetConnection 崩溃了我的程序
- plsql报错:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- 超级简单的问题 高手来吧
- 从几百万条记录中,查询出来一条需要的记录大概多久啊?
- Oracle SQL语句
- oracle数据的导入问题
- 如何利用vb编程从网络数据库中读数据?
- 前辈指点(~§~)
- ORA-01445: 无法从没有键值保存表的连接视图中选择 ROWID ORA-02063: 紧接着line(源于DB_LINK)
- 请问在sql*plus中怎样把查询结果直接保存到文本文件?
- sql問題
- oracle完整安装,需要安装哪些组件?
-- 我用toad運行過似乎沒問題
declare
v_machine varchar2(200);
v_program varchar2(200);
begin
SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
dbms_output.put_line(v_machine);
dbms_output.put_line(v_program);
end;-- 輸出
mypc
Toad.exe
-- SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
v_MACHINE:='test';
v_PROGRAM:='test';
把注释放开~
--你这个问题我见到过很多人问,看看之前版主回答的吧案例四:Sql_trace进行Oracle诊断案例 问题说明:很多时候,在我们进行数据库操作时,比如drop user,drop table等,经常会遇到这样的错误 ORA-00604: error occurred at recursive SQL level 1 . 这样的提示,很多时候是没有丝毫用处的。本案例就这一类问题提供一个思路及方法供大家参考。 1. drop user出现问题 报出以下错误后退出 ORA-00604: error occurred at recursive SQL level 1 ORA-00942: table or view does not exist . 关于 recursive SQL 错误我们有必要做个简单说明。 我们知道,当我们发出一条简单的命令以后 Oracle数据库要在后台解析这条命令,并转换为Oracle数据库的一系列后台操作。 这些后台操作统称为递归sql. 比如create table这样一条简单的DDL命令,Oracle数据库在后台,实际上要把这个命令转换为对于obj$,tab$,col$等底层表的插入操作。Oracle所作的工作可能比我们有时候想的要复杂的多。 2.跟踪问题 我们知道Oracle提供sql_trace的功能 可以用于跟踪Oracle数据库的后台递归操作。 通过跟踪文件,我们可以找到问题的所在 以下是格式化(tkprof)后的输出:The following statement encountered a error during parse:
DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = 'WAPCOMM'
Error encountered: ORA-00942 Oracle把错误信息首先呈现出来,我们看到ORA-00942错误是由于SDO_GEOM_METADATA_TABLE表/视图不存在所致,问题由此可以定位。 对于这一类的错误,定位问题以后解决的方法就要依据具体问题原因而定了。 3.问题定位 对于本案例,通过Metalink获得以下解释:Problem Description
The Oracle Spatial Option has been installed and you are encountering
the following errors while trying to drop a user, who has no spatial tables,
connected as SYSTEM:
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
ORA-06512: at line 7
A 942 error trace shows the failing SQL statement as:
DELETE FROM SDO_GEOM_METADATA_TABLE WHERE SDO_OWNER = ''
Solution Description(1)Create a synonym for SDO_GEOM_METADATA_TABLE under SYSTEM which points to
MDSYS.SDO_GEOM_METADATA_TABLE. 对于本例,为MDSYS.SDO_GEOM_METADATA_TABLE创建一个同义词即可解决,是相对简单的情况。(2)Now the user can be dropped connected as SYSTEM.
Related Documents
ORA-604 and ORA-942 Reported During DROP USER CASCA 4.实际处理 MDSYS.SDO_GEOM_METADATA_TABLE为Spatial对象 如果未使用Spatial选项,可以删除SQL> connect / as sysdbaConnected.
SQL> select * from dba_sdo_geom_metadata order by owner;
select * from dba_sdo_geom_metadata order by owner
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-04063: view "MDSYS.DBA_SDO_GEOM_METADATA" has errors
SQL> select object_name from dba_objects where object_name like '%SDO%';
OBJECT_NAME
ALL_SDO_GEOM_METADATA
ALL_SDO_INDEX_INFO
ALL_SDO_INDEX_METADATA
DBA_SDO_GEOM_METADATA
DBA_SDO_INDEX_INFO
DBA_SDO_INDEX_METADATA
....
DBA_SDO_GEOM_METADATA
DBA_SDO_INDEX_INFO
...
SDO_WITHIN_DISTANCE
USER_SDO_GEOM_METADATA
USER_SDO_INDEX_INFO
USER_SDO_INDEX_METADATA
88 rows selected.
SQL> drop user MDSYS cascade;
User dropped.
SQL> select owner,type_name from dba_types where type_name like 'SDO%';
no rows selected
SQL>
SQL> alter session set sql_trace=true;
Session altered.
SQL> drop user wapcomm;
User dropped.
SQL> alter session set sql_trace=false;
Session altered.
SQL> exit
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.7.4.0 - 64bit Production 这时用户得以顺利drop
转自
http://space.itpub.net/html/89/35489-84515.html
--所以这个问题就是常常被一些人问为什么会报ORA-00942:table or view does not exist
--具体你可以参考下上面的回复
declare
v_machine varchar2(200);
v_program varchar2(200);
begin
SELECT MACHINE,PROGRAM INTO v_MACHINE,v_PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SELECT USERENV('SESSIONID') FROM DUAL);
dbms_output.put_line(v_machine);
dbms_output.put_line(v_program);
end;-- 輸出
PL/SQL block, executed in 0.046 sec.
WORKGROUP\CDEFPG0116
SQLTools.exe
Total execution time 0.078 sec.
に接続されました。
SQL>
SQL> SELECT MACHINE,PROGRAM FROM V$SESSION WHERE TYPE = 'USER' AND AUDSID = (SEL
ECT USERENV('SESSIONID') FROM DUAL);MACHINE
--------------------------------------------------------------------------------PROGRAM
--------------------------------------------------------------------------------ISOFTSTONE\ISSUSER-664F078
sqlplus.exe
SQL>