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

Oracle 创建过程时出错:声明并结束错误,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我从程序开始,这些问题让我不知所措 我不明白为什么我在添加过程时会出现错误,因为我认为这没问题,而且最终也不会导致错误 我附上代码 错误: 行/列错误 10/1 PLS-00103:遇到符号声明 16/4 PLS-00103:在预期以下情况之一时遇到文件结尾符号: begin case declare end exception exit for goto if loop mod null pragma raise return select update when withRemove ext

我从程序开始,这些问题让我不知所措

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

我附上代码

错误:

行/列错误

10/1 PLS-00103:遇到符号声明 16/4 PLS-00103:在预期以下情况之一时遇到文件结尾符号: begin case declare end exception exit for goto if loop mod null pragma raise return select update when withRemove extra;,或写是

create过程的语法

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

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将其锚定到相应表列的类型


网上很多例子都是大写的,没有明确的原因。你通常不会用大写字母写计算机代码。

有问题;在申报之前。检查设备;这里只有一个问题。另一个是DECLARE启动一个匿名块。匿名块不能出现在另一个块的声明部分中。除非您需要子块,否则不会进行声明,在这种情况下,它需要在第一次开始之后进行。如何执行此过程我不知道,抱歉,我正在启动我正在尝试使用EXEC INSERT_Movimentos 0,0,0,'2008-11-11',o',0;并在第1行回答错误:ORA-01861:literal与格式字符串ORA-06512:1第4行参数必须是日期文字或变量,而不是“2008-11-11”。请查看有关的文档。
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;
/