警告:在oracle中使用编译错误创建的过程

Ses*_*raj 0 oracle plsql stored-procedures oracle10g

创建表:

create table customer (Name varchar2(10), Address varchar(40), Contact number);
Run Code Online (Sandbox Code Playgroud)

INSERT的创建过程:

CREATE OR REPLACE PROCEDURE SP_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
INSERT INTO customer ("Name", "Address", "Contact")
VALUES (p_name, p_address, p_contact);
COMMIT;
END;
/
Run Code Online (Sandbox Code Playgroud)

错误:IT显示:警告:使用编译错误创建的过程.

CREATE PROCEDURE FOR SELECT:

CREATE OR REPLACE PROCEDURE SP_SELECT_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
SELECT Name, Address, Contact FROM customer;
END;
/
Run Code Online (Sandbox Code Playgroud)

错误:IT显示:警告:使用编译错误创建的过程.

问题是什么.?怎么解决呢.

Jef*_*emp 9

  1. 每当你在SQL*Plus中编译某些东西并且你得到"编译错误"时,你要做的第一件事就是SHOW ERRORS告诉你实际出了什么问题.

  2. 您的第一个过程存在一个问题,即列名与表中的列名不匹配.你的表定义具有Name,AddressContact,而是因为你没有使用双引号,列名实际上是NAME,ADDRESSCONTACT-但你的INSERT语句使用双引号,所以它试图插入Name等刚刚摆脱了双 - 引用,你在这里不需要它们.

  3. 在第二个过程中,PL/SQL中有一个SELECT语句,但是没有指定将结果数据放在何处.您至少需要一个INTO子句,或者可能对结果记录执行LOOP.