Catch multiple records when doing Select Into
I have a SELECT INTO varname columname FROM ... statement and I would
like to raise an exception when that returns more than one record.
GET DIAGNOSTICS rowcount = ROW_COUNT seems to return always one for
this. Currently I find no other way to do that than to run this
statement twice - first to see how many records it returns, which seems
very inefficient.
I can see that this will be handled for 8.2, but for 8.1 what is the
best practice to do this?
Thanks.
SWK
It would be easier if we could see the context in which you are doing
the select into. However I think this may help. Try putting the
select into in a loop:
declare
_result record;
_rows integer;
begin
_rows := 0;
for _result in select statement here loop
in here put logic to raise your exception if you get more
than one result
_rows := _rows + 1;
if _rows > 1 then raise exception 'Hey too many rows';
return next _result;
end loop;
end;
Show quoted text
On Oct 31, 4:15 am, "SunWuKung" <Balazs.Kl...@t-online.hu> wrote:
I have a SELECT INTO varname columname FROM ... statement and I would
like to raise an exception when that returns more than one record.
GET DIAGNOSTICS rowcount = ROW_COUNT seems to return always one for
this. Currently I find no other way to do that than to run this
statement twice - first to see how many records it returns, which seems
very inefficient.I can see that this will be handled for 8.2, but for 8.1 what is the
best practice to do this?Thanks.
SWK
Hugh, that's a long way to do that.
Thanks for the help.
SWK
Ketema wrote:
Show quoted text
It would be easier if we could see the context in which you are doing
the select into. However I think this may help. Try putting the
select into in a loop:declare
_result record;
_rows integer;
begin
_rows := 0;
for _result in select statement here loop
in here put logic to raise your exception if you get more
than one result
_rows := _rows + 1;
if _rows > 1 then raise exception 'Hey too many rows';
return next _result;
end loop;
end;On Oct 31, 4:15 am, "SunWuKung" <Balazs.Kl...@t-online.hu> wrote:
I have a SELECT INTO varname columname FROM ... statement and I would
like to raise an exception when that returns more than one record.
GET DIAGNOSTICS rowcount = ROW_COUNT seems to return always one for
this. Currently I find no other way to do that than to run this
statement twice - first to see how many records it returns, which seems
very inefficient.I can see that this will be handled for 8.2, but for 8.1 what is the
best practice to do this?Thanks.
SWK