【问题标题】:PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: := . ( @ % ;PLS-00103:在预期以下之一时遇到符号“文件结尾”::=。 (@%;
【发布时间】:2015-02-04 20:11:00
【问题描述】:

我的 PLSQL 出了什么问题?

CREATE OR REPLACE PROCEDURE REGISTRO_CLIENTE_TARJETA(
v_nombre IN VARCHAR2, 
v_ap_paterno IN VARCHAR2, 
v_ap_paterno IN VARCHAR2, 
v_rfc IN VARCHAR2, 
v_email IN VARCHAR2, 
v_direccion IN VARCHAR2, 
v_numero IN VARCHAR2, 
v_num_seg IN VARCHAR2, 
v_mes_exp IN VARCHAR2, 
v_anio_expiracion IN VARCHAR2)
AS
BEGIN 
INSERT INTO TARJETA_DE_CREDITO(TARJETA_ID, NUMERO, NUM_SEGURIDAD, MES_EXPIRACION, ANIO_EXPIRACION) 
VALUES(TARJETA_CREDITO_SEQ.NEXTVAL, v_numero, v_num_seg, v_mes_exp, v_anio_expiracion)

INSERT INTO CLIENTE(CLIENTE_ID,NOMBRE, AP_PATERNO, AP_MATERNO, RFC, EMAIL, DIRECCION, TARJETA_ID)
VALUES(CLIENTE_SEQ.NEXTVAL, v_nombre, v_ap_paterno, v_ap_paterno, v_rfc, v_email, v_direccion, (SELECT LAST_NUMBER FROM ALL_SEQUENCES WHERE SEQUENCE_NAME = 'TERCERO_SEQ'))

END;

使用 show errors 命令时出现以下错误:

LINE/COL ERROR
-------- -----------------------------------------------------------------
14/1     PL/SQL: SQL Statement ignored
15/88    PL/SQL: ORA-00933: SQL command not properly ended
19/3     PLS-00103: Encountered the symbol "end-of-file" when expecting
         one of the following:
         := . ( @ % ;

【问题讨论】:

  • 您需要在每个 VALUES(...) 的末尾加上分号

标签: oracle plsql oracle11g sqlplus


【解决方案1】:

INSERT 语句必须以 semi-colon 结尾。

insert into table (columns list) values (values list);

作为一种好的做法,始终在SQL*Plus 中编译您的代码并执行SHOW ERROR。查看error stack 中的line number。如果没有任何 EXCEPTION 块(或使用适当的异常处理),您将获得正确的行号。通过转到行号并验证来尝试debug您的代码。

【讨论】:

  • 谢谢,那部分就完成了。 ap_paterno 上也有重复的记录名称。
  • 感谢您的反馈。
猜你喜欢
  • 1970-01-01
  • 2011-10-21
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2014-09-18
  • 2012-10-26
相关资源
最近更新 更多