我正在尝试创建一个程序 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
我尝试过很多东西,但迄今为止都没有。
我们的数据仓库人员说&#34;我们不知道出了什么问题&#34;。
亲爱的众神......我需要做什么,让我的程序做我想做的事情? :)
答案 0 :(得分:2)
这里有几个错误:
v_event
,因此您尝试将数据返回到未实例化的变量/输出参数*
你必须明确说明所有列 - 这是你得到的实际错误假设一个看起来像这样的表
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;