自己建一个查询:
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);

解决方案 »

  1.   

    ORA-00942:table or view does not exist产生原因:这是由于装载的表或视图不存在,多半是CATEXP.SQL还没有运行,无法执行Export视图,如果CATEXP.SQL已经运行,则可能是版本错误。解决方法:因为Import和Export共享的一些视图是通过运行CATEXP.SQL来装载的(它们具有相同的视图),并不生成单独的CATEXP.SQL,因而造成视图与Export代码不同步,较难保持彼此之间的兼容,用户就必须建立自己的Export应用,从而避免ORA-00942的错误。相应的英文如下:Cause:The table or view entered does not exist,a synonym that is jnot allowed here was used,or a view was referenced where a table is required.Existing user tables and views can be listed by querying the data dictionary.Certain privileges may required to access the table.If an application returned this message,the table the application tried to access does not exist in the database,or the application does not have access to it.Action:Check each of the following:The spelling of the table or view name.That a view is not specified where a table is requiredThat an existing table or view name exists.Contact the database administrator if the table needs to be created or if user or application priviledes are required to access the table.Also, if attempting to access a table or view in another schema,make certain thecorrect schema is referenced and that access to the object is granted.
      

  2.   


    -- 我用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
      

  3.   

     /* セッション情報取得 */
     -- 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';
    把注释放开~
      

  4.   


    --你这个问题我见到过很多人问,看看之前版主回答的吧案例四: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
      

  5.   

    见神秘的dual
      

  6.   

    --我用SQLTOOLS运行也没错
    --所以这个问题就是常常被一些人问为什么会报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.     
      

  7.   

    SQL*Plus: Release 10.2.0.3.0 - Production on 火 11月 16 11:35:15 2010Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.Oracle Database 11g Release 11.2.0.1.0 - Production
    に接続されました。
    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>