今天在学用navicat链接ORACLE数据库,数据库中有表testlong
创建新存储过程如下:
CREATE OR REPLACE
PROCEDURE white_user_list AS
V_PROD_ID number;
BEGIN
select number1 into V_PROD_ID from testlong;
-- routine body goes here, e.g.
-- DBMS_OUTPUT.PUT_LINE('Navicat for Oracle');
END;
,发现存储过程总是遇到编译错误pls-00942,提示表不存在。
网上查询后,得知我的user权限不足以创建存储过程,就找DBA大哥要了dba权限,发现问题依旧。
最终发现 oracle的sql语句是默认为大写的 即我的语句被翻译成了 ,
select NUMBER1 into V_PROD_ID from TESTLONG;
来执行。
要解决两个方法:1.改变表名、列名为大写
2在 表名\列明上打双引号 成为 “number1” 和“testlong”
select “number1” into V_PROD_ID from “testlong”;
就能成功执行了。
在其他时候也会遇到类似的情况,请大家引以为戒。