raise

(5.6)

drop function fun1;
delimiter //
create function fun1(p1 integer)
returns integer
no sql
begin
declare ret int;
set ret = p1;
if ret = 0 then
return ret;
else
signal sqlstate value '08S01'
set message_text = 'an error occurred';
end if;
end//
delimiter ;


select fun1(0);
select fun1(1);

 

(12cR1)


create or replace function fun1(p1 in integer) return integer
as
ret integer;
reigai exception;
pragma exception_init(reigai, -12154);
begin
ret := p1;
if ret = 0 then
return ret;
else
raise reigai;
end if;
end;
/


select fun1(0) from dual;
select fun1(1) from dual;

create or replace function fun2(p1 in integer) return integer
as
ret integer;
begin
ret := p1;
if ret = 0 then
return ret;
else
raise_application_error(-20000, 'an error occurred');
end if;
end;
/


select fun2(0) from dual;
select fun2(1) from dual;

 

(11)


create or replace function fun1(in p1 integer) returns integer
as
$$
declare
ret integer;
begin
ret := p1;
if ret = 0 then
return ret;
else
raise exception sqlstate '08000' using message = 'an error occurred';
end if;
end;
$$ language 'plpgsql';


select fun1(0);
select fun1(1);

(2014)

drop procedure proc1;
go
create procedure proc1(@p1 integer)
as
begin
declare @ret integer;

set @ret = @p1;

if @ret = 0
begin
set @ret = 0;
end
else
begin
throw 50000, 'an error occurred', 255;
end
end
go

exec proc1 0;
exec proc1 1;


SQL Serverの場合、function内にraise文は定義できない模様