【问题标题】:PL/SQL: SQL Statement ignored and invalid identifier issuesPL/SQL:SQL 语句被忽略和标识符无效问题
【发布时间】:2020-08-04 13:18:15
【问题描述】:

我正在使用类型创建一个函数,它给了我两个错误说: 错误 (12,7): PL/SQL: SQL 语句被忽略 错误(27,13):PL/SQL:ORA-00904:“UT”:标识符无效

我的代码看不到任何问题,如下所示,有什么帮助吗?

CREATE OR REPLACE EDITIONABLE FUNCTION ESF_GET_USERS
          
RETURN tc_users
IS
    l_users       tc_users;           

BEGIN   
      SELECT t_user
        (  
            Uname,
            FName,
            Sname,
            PName,
            Tit,
            mail,
            FC,
            SC,
            SN,
            SD,
            RC,
            RN,
            CC || ' ' || CN,
            UT
        )
        BULK COLLECT INTO l_users
        FROM USERS_MV;

    RETURN l_users;

EXCEPTION   
    WHEN NO_DATA_FOUND THEN
        RAISE_APPLICATION_ERROR(-20001,'No records returned');     
END esf_users;

我正在创建两种类型,一种是对象,第二种是来自该对象的表,如下所示:

CREATE OR REPLACE EDITIONABLE TYPE T_USER 
AS OBJECT
(  
    UNAME       VARCHAR2(20 BYTE),
    FNAME       VARCHAR2(30 BYTE),
    SNAME         VARCHAR2(30 BYTE),
    PNAME   VARCHAR2(30 BYTE),
    TIT           VARCHAR2(30 BYTE),
    MAIL           VARCHAR2(24 BYTE),
    FC     VARCHAR2(10 BYTE),
    SC      VARCHAR2(10 BYTE),
    SN      VARCHAR2(200 BYTE),
    SD       VARCHAR2(10 BYTE),
    RC   VARCHAR2(10 BYTE),
    RN   VARCHAR2(200 BYTE),
    HN  VARCHAR2(100 BYTE),
    UT  VARCHAR2(7 BYTE)
);



CREATE OR REPLACE EDITIONABLE TYPE TC_USERS AS TABLE OF t_user;

物化视图代码为:

 CREATE MATERIALIZED VIEW "USERS_MV" 
  AS select "UName",
"FName",
"Sname",
"PName",
"Tit",
"mail",
"FC",
"SC",
"SN",
"SD",
"RC",
"RN",
"CC",
"CN",
"UT"
 from (
 SELECT ...

【问题讨论】:

  • 第 1 行的双引号是怎么回事?
  • 抱歉,只是复制粘贴时打错了
  • 你能发帖users_mvddl吗?
  • @Kumar 我已经添加了 mv 代码,它工作正常

标签: oracle plsql


【解决方案1】:

看起来像 Oracle 中的一个经典错误 - 永远不要将任何内容括在双引号中。如果您只执行一次(在创建该对象时),则必须始终执行此操作。

SQL> create table test ("Id" number);

Table created.

SQL> select id from test;
select id from test
       *
ERROR at line 1:
ORA-00904: "ID": invalid identifier


SQL> select ID from test;
select ID from test
       *
ERROR at line 1:
ORA-00904: "ID": invalid identifier


SQL> select "ID" from test;
select "ID" from test
       *
ERROR at line 1:
ORA-00904: "ID": invalid identifier


SQL> select "Id" from test;

no rows selected

SQL>

我建议您重新创建所有内容 - 删除双引号。 Oracle 将使用 UPPPERCASE 存储名称,但您可以使用任何您想要的大小写来引用对象/列。

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多