错误创建过程:声明并结束错误

时间:2019-03-09 00:54:05

标签: oracle stored-procedures plsql

我从程序开始,我迷失了这些问题。

我不明白为什么在添加过程时会出现错误,因为我认为这没问题,而且最终也不会导致错误。

我附上代码。

错误:

  

线路/颜色错误

     
     

10/1 PLS-00103:出现符号“ DECLARE”
  16/4 PLS-00103:预期以下情况之一时遇到符号“文件结尾”:
  (如果循环mod null pragma引发return select update时,则为goto声明结束异常退出,而<< <<继续关闭当前删除取回锁插入打开回滚保存点设置sql执行commit forall合并管道清除

代码:

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

DECLARE
    sql_str VARCHAR2(500):='';

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

2 个答案:

答案 0 :(得分:1)

示例语法:

create or replace procedure insert_movimientos
    ( insertmov_cod_banco in number
    , insertmov_cod_sucur in number
    , insertmov_num_cta   in number
    , insertmov_fecha_mov in date
    , insertmov_tipo_mov  in varchar2
    , insertmov_importe   in number )
is
    sql_str varchar2(500) := 'INSERT INTO MOVIMIENTOS (';
begin
    dbms_output.put_line(sql_str);
end;
/

斜杠用于客户端应用程序,因此根据所使用的工具,可能不需要使用斜杠。

我更改了insertmov_tipo_mov的数据类型。 char添加了没人需要的空格,主要是为了ANSI兼容性而提供的。最好使用标准类型。

更好的是,使用table name.columnname%type将其锚定到相应表列的类型。

许多在线示例都是大写的,没有明确的原因。通常,您不要大写计算机代码。

答案 1 :(得分:0)

删除多余的;,或写IS

创建过程的语法

CREATE OR REPLACE PROCEDURE INSERT_MOVIMIENTOS (
    ...
)
IS
    sql_str VARCHAR2(500):='';
    ...
;