【问题标题】:Creating stored procedure in toad failed to execute在 toad 中创建存储过程执行失败
【发布时间】:2019-07-24 23:48:45
【问题描述】:

我正在 Toad 中创建更新存储过程。当我执行查询时,它会返回这样的错误。

1/51    PLS-00103: Encountered the symbol "(" when expecting one of the following:
          := . ) , @ % default character

这是我的代码:

我尝试将AS 更改为IN,但仍然是同样的错误

Create Or Replace Procedure SP_EMPLOYEE_UPDATE(P_EMPLOYEEID VARCHAR2(20 CHAR),
P_EMPLOYEENAME VARCHAR2(100 CHAR),
P_STATUS VARCHAR2(50 CHAR),
P_SUPERIORID VARCHAR2(20 CHAR),
P_MANAGERSUPERIORID VARCHAR2(20 CHAR),
P_BFG VARCHAR2(10 CHAR),
P_DATEHIRED Date,
P_DESIGNATION VARCHAR2(100 CHAR),
P_JOBGRADE NUmber,
P_EMAILADDRESS VARCHAR2(100 CHAR),
P_PRODUCTLINE VARCHAR2(80 BYTE),
P_STATION VARCHAR2(80 BYTE),
P_MACHINE  VARCHAR2(80 BYTE),
P_OPERATIONGROUP VARCHAR2(80 BYTE),
P_ISACTIVE VARCHAR2(1 BYTE)) 

AS

Begin 
Update REFEMPLOYEES set REFEMPLOYEES.EMPLOYEENAME = P_EMPLOYEENAME , REFEMPLOYEES.STATUS= P_STATUS,REFEMPLOYEES.SUPERIORID = P_SUPERIORID,REFEMPLOYEES.MANAGERSUPERIORID= P_MANAGERSUPERIORID,REFEMPLOYEES.BFG = P_BFG,
REFEMPLOYEES.DATEHIRED = P_DATEHIRED,REFEMPLOYEES.DESIGNATION = P_DESIGNATION,REFEMPLOYEES.JOBGRADE = P_JOBGRADE,REFEMPLOYEES.EMAILADDRESS = P_EMAILADDRESS,REFEMPLOYEES.PRODUCTLINE = P_PRODUCTLINE,REFEMPLOYEES.STATION = P_STATION,
REFEMPLOYEES.MACHINE = P_MACHINE,REFEMPLOYEES.OPERATIONGROUP = P_OPERATIONGROUP,REFEMPLOYEES.ISACTIVE = P_ISACTIVE
 Where REFEMPLOYEES.EMPLOYEEID = P_EMPLOYEEID;



End

【问题讨论】:

  • 删除过程参数的大小。它应该只是VARCHAR2 没有大小。还在End 之后添加;/
  • 按你说的做了我得到不同的错误
  • 此错误 11/27 PLS-00103:遇到符号“,”时预期以下之一:;使用外部确定性并行启用流水线结果缓存 17/1 PLS-00103 将 authid 作为集群顺序:在预期以下情况之一时遇到符号“AS”:返回
  • 也许你在某处添加了一个额外的,
  • 检查了两次没有发现多余的,

标签: oracle stored-procedures toad


【解决方案1】:

理想情况下,您的代码应如下所示:

CREATE OR REPLACE PROCEDURE SP_EMPLOYEE_UPDATE (
    P_EMPLOYEEID          VARCHAR2,
    P_EMPLOYEENAME        VARCHAR2,
    P_STATUS              VARCHAR2,
    P_SUPERIORID          VARCHAR2,
    P_MANAGERSUPERIORID   VARCHAR2,
    P_BFG                 VARCHAR2,
    P_DATEHIRED           DATE,
    P_DESIGNATION         VARCHAR2,
    P_JOBGRADE            NUMBER,
    P_EMAILADDRESS        VARCHAR2,
    P_PRODUCTLINE         VARCHAR2,
    P_STATION             VARCHAR2,
    P_MACHINE             VARCHAR2,
    P_OPERATIONGROUP      VARCHAR2,
    P_ISACTIVE            VARCHAR2
) AS
BEGIN
    UPDATE REFEMPLOYEES
    SET
        REFEMPLOYEES.EMPLOYEENAME = P_EMPLOYEENAME,
        REFEMPLOYEES.STATUS = P_STATUS,
        REFEMPLOYEES.SUPERIORID = P_SUPERIORID,
        REFEMPLOYEES.MANAGERSUPERIORID = P_MANAGERSUPERIORID,
        REFEMPLOYEES.BFG = P_BFG,
        REFEMPLOYEES.DATEHIRED = P_DATEHIRED,
        REFEMPLOYEES.DESIGNATION = P_DESIGNATION,
        REFEMPLOYEES.JOBGRADE = P_JOBGRADE,
        REFEMPLOYEES.EMAILADDRESS = P_EMAILADDRESS,
        REFEMPLOYEES.PRODUCTLINE = P_PRODUCTLINE,
        REFEMPLOYEES.STATION = P_STATION,
        REFEMPLOYEES.MACHINE = P_MACHINE,
        REFEMPLOYEES.OPERATIONGROUP = P_OPERATIONGROUP,
        REFEMPLOYEES.ISACTIVE = P_ISACTIVE
    WHERE
        REFEMPLOYEES.EMPLOYEEID = P_EMPLOYEEID;

END SP_EMPLOYEE_UPDATE;
/

干杯!!

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多