ファンクション

create or replace function func1 return integer as

ret integer;

begin
select nvl(max(col1),0) into ret from tab1;
return ret;
exception when others then
return -1;
end;
/

select func1 from dual;

SHOW FUNCTION STATUS\G
show create function func1;


CREATE FUNCTION func1 (s CHAR(20))
RETURNS CHAR(50) DETERMINISTIC
RETURN CONCAT('Hello, ',s,'!');

SELECT func1('world');

delimiter //
CREATE FUNCTION func2(i INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
RETURN i;
END//
delimiter ;


delimiter //
CREATE FUNCTION f2()
RETURNS CHAR(36) CHARACTER SET utf8
BEGIN
RETURN UUID();
END//
delimiter ;

set global log_bin_trust_function_creators = 1;

 

\df+

CREATE OR REPLACE FUNCTION func1(i integer) RETURNS integer AS $$
BEGIN
RETURN i + 1;
END;
$$ LANGUAGE plpgsql;

select func1(123);

 

--スカラー値関数
CREATE FUNCTION func1
(
@param1 int
)
RETURNS int
AS
BEGIN
DECLARE @ret int;

SELECT @ret = SUM(col1)
FROM tab1 t
WHERE t.col2 >= @param1

IF (@ret IS NULL)
SET @ret = 0
RETURN @ret
END

go


declare @rv int
select @rv = [dbo].[func1](3)
print @rv
go

--テーブル値関数
CREATE FUNCTION dbo.func2
(
@param1 int
)
RETURNS TABLE
AS
RETURN
(
SELECT * from tab1 t
where t.col2 > @param1
)
go

select * from dbo.func2(2)
go