编译失败:在预期以下之一时遇到符号“,”::=;非空默认字符

Posted

技术标签:

【中文标题】编译失败:在预期以下之一时遇到符号“,”::=;非空默认字符【英文标题】:Compilation failed: Encountered the symbol "," when expecting one of the following: := ; not null default character 【发布时间】:2016-02-16 01:11:44 【问题描述】:

我正面临这个错误:

编译失败,第 3 行 (01:07:19) PLS-00103:在期待其中一个时遇到符号“,” 以下::=;不为空的默认字符

我的程序是:

create or replace procedure testing
as 
v_ID NUMBER;v_ASSIGNEE_NAME varchar2(55),v_EMAIL varchar2(55),v_PHONE NUMBER;v_FIELD varchar2(50); 
begin
select ID,ASSIGNEE_NAME,EMAIL,PHONE,FIELD into 
v_ID NUMBER;v_ASSIGNEE_NAME varchar2(55),v_EMAIL varchar2(55),v_PHONE NUMBER;v_FIELD varchar2(50);
FROM ASSIGNEE;

【问题讨论】:

【参考方案1】:

这方面有很多问题,请参阅下面的格式化代码。在你的变量声明中,你用逗号分隔它们,这需要是一个分号。同样在您的 into 子句中,您已经包含了变量类型。您可以做的最好的事情是格式化您的代码,以便更易于阅读和调试。

create or replace procedure testing as 
      v_ID NUMBER;
      v_ASSIGNEE_NAME varchar2(55);
      v_EMAIL varchar2(55);
      v_PHONE NUMBER;
      v_FIELD varchar2(50); 
 begin
      select ID,ASSIGNEE_NAME,EMAIL,PHONE,FIELD 
      into v_ID NUMBER, v_ASSIGNEE_NAME, v_EMAIL, v_PHONE NUMBER, v_FIELD
      FROM ASSIGNEE;
end;

【讨论】:

【参考方案2】:

有几个语法错误导致您无法编译代码。下面sn-p会帮到你。

CREATE OR REPLACE PROCEDURE testing
AS
  v_ID            NUMBER;
  v_ASSIGNEE_NAME VARCHAR2(55);
  v_EMAIL         VARCHAR2(55);
  v_PHONE         NUMBER;
  v_FIELD         VARCHAR2(50);
BEGIN
  SELECT ID,
    ASSIGNEE_NAME,
    EMAIL,
    PHONE,
    FIELD
  INTO v_ID,
    v_ASSIGNEE_NAME,
    v_EMAIL,
    v_PHONE,
    v_FIELD
  FROM ASSIGNEE;
END;

【讨论】:

以上是关于编译失败:在预期以下之一时遇到符号“,”::=;非空默认字符的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;

在预期以下情况之一时遇到符号“文件结尾”

在预期以下情况之一时遇到符号“INTO”

错误:PLS-00103:在预期以下情况之一时遇到符号“)”

PLS-00103:在预期以下情况之一时遇到符号“END”