Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 程序选择1并删除_Oracle_Stored Procedures_Plsql - Fatal编程技术网

Oracle 程序选择1并删除

Oracle 程序选择1并删除,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我正在尝试创建一个过程 1.选择第一条记录。 2.删除记录并将其返回给调用者 我有以下代码(请注意,我对PLSQL相当陌生)。 我是通过查看其他SO问题和oracle文档得到的 CREATE PROCEDURE TAKE_1_DELETE_1 AS BEGIN DELETE FROM my_table where rownum = 1 RETURNING * INTO v_event; END TAKE_1_DELETE_1; 我得到以下错误: [Error] PLS-00103 (7

我正在尝试创建一个过程
1.选择第一条记录。
2.删除记录并将其返回给调用者

我有以下代码(请注意,我对PLSQL相当陌生)。 我是通过查看其他SO问题和oracle文档得到的

CREATE PROCEDURE TAKE_1_DELETE_1
AS
BEGIN
DELETE FROM my_table
where rownum = 1
  RETURNING *
  INTO v_event;
END TAKE_1_DELETE_1;
我得到以下错误:

[Error] PLS-00103 (7: 3): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ; <an identifier> <a double-quoted delimited-identifier>
   current delete exists prior <a single-quoted SQL st
[错误]PLS-00103(7:3):PLS-00103:在预期以下情况之一时遇到符号“文件结束”:
;  

当前删除之前存在这里有几个错误:

  • 您尚未声明
    v_事件
    ,因此您正在尝试将数据返回到未实例化的变量/out参数中
  • 您必须显式地声明所有列-这是您得到的实际错误
  • 假设一张像这样的桌子

    create table my_table (a number, b number);
    
    您的过程如下所示:

    create or replace procedure take_1_delete_1 is
       v_event my_table%rowtype;
    begin
    
       delete from my_table
        where rownum = 1
       returning a, b
         into v_event;
    
    end take_1_delete_1;
    
    或者,如果希望在过程之外使用返回值,可以使用OUT参数,而不是声明局部变量

    create or replace procedure take_1_delete_1 (p_event out my_table%rowtype) is
    begin
    
       delete from my_table
        where rownum = 1
       returning a, b
         into p_event;
    
    end take_1_delete_1;
    

    这里有几个错误:

  • 您尚未声明
    v_事件
    ,因此您正在尝试将数据返回到未实例化的变量/out参数中
  • 您必须显式地声明所有列-这是您得到的实际错误
  • 假设一张像这样的桌子

    create table my_table (a number, b number);
    
    您的过程如下所示:

    create or replace procedure take_1_delete_1 is
       v_event my_table%rowtype;
    begin
    
       delete from my_table
        where rownum = 1
       returning a, b
         into v_event;
    
    end take_1_delete_1;
    
    或者,如果希望在过程之外使用返回值,可以使用OUT参数,而不是声明局部变量

    create or replace procedure take_1_delete_1 (p_event out my_table%rowtype) is
    begin
    
       delete from my_table
        where rownum = 1
       returning a, b
         into p_event;
    
    end take_1_delete_1;
    

    您尚未声明v_事件变量fwiw。(这不是您上述错误的原因,但一旦更正,您将因变量而出现另一个错误!)@Boneist感谢您的提醒您尚未声明v_事件变量fwiw。(这不是你上述错误的原因,但一旦纠正了,你就会因为变量而犯下另一个错误!)@Boneist感谢Stack Overflow的领导,你是人类中的上帝。Stack Overflow的Ben,你是人类中的上帝。