SQL错误创建过程:PLS-00103:遇到符号“ AS”

时间:2019-03-08 23:15:11

标签: sql stored-procedures procedure

我正在进入程序的世界,但我有未发现的错误。

我不需要添加任何其他内容,也不知道他为什么要求“ as”。

谢谢

错误:

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/22     PLS-00103: Encountered the symbol "AS" when expecting one of the
         following:
         in out <an identifier> <a double-quoted delimited-identifier>
         ... long double ref char time timestamp interval date binary
         national character nchar

代码:

CREATE OR REPLACE PROCEDURE INSERT_MOVIMIENTOS (
INSERTMOV_COD_BANCO  AS NUMBER(4),
INSERTMOV_COD_SUCUR  AS NUMBER(4),
INSERTMOV_NUM_CTA    AS NUMBER(10),
INSERTMOV_FECHA_MOV  AS DATE,
INSERTMOV_TIPO_MOV   AS CHAR(1),
INSERTMOV_IMPORTE    AS NUMBER(10)
)

DECLARE 
    sql_str VARCHAR2(500):='';

BEGIN
    sql_str:=sql_str||'INSERT INTO MOVIMIENTOS (';
    dbms_output.put_line(sql_str);
END;    
/

EXEC INSERT_MOVIMIENTOS (0, 0, 0, '2008-11-11', 'o', 0);

1 个答案:

答案 0 :(得分:1)

我不是Oracle方面的专家,但请注意:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6009.htm

在声明输入参数时,您需要使用IN而不是AS。考虑到这一点,我会尝试这样做:

CREATE OR REPLACE PROCEDURE INSERT_MOVIMIENTOS (
INSERTMOV_COD_BANCO  IN NUMBER(4),
INSERTMOV_COD_SUCUR  IN NUMBER(4),
INSERTMOV_NUM_CTA    IN NUMBER(10),
INSERTMOV_FECHA_MOV  IN DATE,
INSERTMOV_TIPO_MOV   IN CHAR(1),
INSERTMOV_IMPORTE    IN NUMBER(10)
)

DECLARE 
    sql_str VARCHAR2(500):='';

BEGIN
    sql_str:=sql_str||'INSERT INTO MOVIMIENTOS (';
    dbms_output.put_line(sql_str);
END;    
/

EXEC INSERT_MOVIMIENTOS (0, 0, 0, '2008-11-11', 'o', 0);