在Oracle数据库中创建存储过程时表不存在[重复]

xghobddn  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(123)

此问题在此处已有答案

SQL Error: ORA-00942 table or view does not exist(7个答案)
20天前关闭。
我创建了一个名为Test的数据库。有一个名为Banks的表,该表存在并且也有数据。我在www.example.com core API项目中使用EF core生成了这个表asp.net。
当我尝试创建一个存储过程GetAllEntities时,我得到一个错误
表或视图不存在

create or replace NONEDITIONABLE PROCEDURE GetAllEntities (
    p_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN p_cursor FOR
    SELECT * FROM Banks;
END GetAllEntities;

字符串
有谁能帮我找出解决办法吗?

pgccezyw

pgccezyw1#

我怀疑这是关于信件的案子。Oracle不区分大小写,除非您通过将其名称括在双引号中来创建table(或任何其他对象)。
举例来说:

SQL> create table "Banks" (id number);

Table created.

SQL> insert into "Banks" values (1);

1 row created.

SQL> select * from "Banks";

        ID
----------
         1

字符串
现在看看这个:我遵循了字母大小写(大写“B”,小写“anks”),但是-没有双引号-该表不存在:

SQL> select * From Banks;
select * From Banks
              *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL>


因此,在您的程序中也可能是这种情况。我注意到你使用了Banks,但是没有双引号。如果添加它们:

SQL> create or replace PROCEDURE GetAllEntities (
  2      p_cursor OUT SYS_REFCURSOR
  3  )
  4  AS
  5  BEGIN
  6      OPEN p_cursor FOR
  7      SELECT * FROM "Banks";       --> here
  8  END GetAllEntities;
  9  /

Procedure created.

SQL>


这可能是,也可能不是你犯错误的原因。如果我写的东西没有帮助,请发布更多的信息-特别是,证明名称为Banks的表存在于您创建该过程的模式中。

相关问题