postgresqlstore 프로세스 초기 탐색 중 하나
postgresql11 이전의 함수(function)와 저장 프로세스(procedure)는 같은 의미어로 문법은 다음과 같다.
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
예:
CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $body$
declare
total integer;
BEGIN
SELECT count(*) into total FROM EMPLOYEES;
RETURN total;
END;
$body$ LANGUAGE plpgsql;
select 호출 사용하기
select totalRecords();
postgresql11은 저장 프로세스(procedure)의 사용을 시작합니다.commit,rollback의 사무 문장을 포함할 수 있습니다.
CREATE [ OR REPLACE ] PROCEDURE
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
{ LANGUAGE lang_name
| TRANSFORM { FOR TYPE type_name } [, ... ]
| [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
| SET configuration_parameter { TO value | = value | FROM CURRENT }
| AS 'definition'
| AS 'obj_file', 'link_symbol'
} ...
호출
CALL name ( [ argument ] [, ...] )
버전 # cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
# su - postgres
$ psql -c "select version();"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 11.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)
테스트 create table t_log (
id bigserial,
log_level varchar(100),
log_info varchar(100),
log_timestamp timestamp
)
;
CREATE OR REPLACE PROCEDURE sp_write_log (
iv_log_level in varchar,
iv_log_info in varchar
) AS
$body$
declare
BEGIN
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
END;
$body$
LANGUAGE 'plpgsql';
select 호출 사용하기postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+---------------
(0 rows)
postgres=# select sp_write_log('a','a');
ERROR: sp_write_log(unknown, unknown) is a procedure
LINE 1: select sp_write_log('a','a');
^
HINT: To call a procedure, use CALL.
콜 호출을 사용해야 합니다postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+---------------
(0 rows)
postgres=# call sp_write_log('a','a');
CALL
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+----------------------------
1 | a | a | 2019-10-21 09:47:40.235877
(1 row)
commit, rollback 태그 추가 CREATE OR REPLACE PROCEDURE sp_write_log2 (
iv_log_level in varchar,
iv_log_info in varchar
) AS
$body$
declare
BEGIN
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
rollback;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
commit;
END;
$body$
LANGUAGE 'plpgsql';
postgres=# call sp_write_log('a','a');
CALL
postgres=# call sp_write_log('a','a');
CALL
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+----------------------------
1 | a | a | 2019-10-21 10:07:00.627889
2 | a | a | 2019-10-21 10:07:05.477492
(2 rows)
Sequence도 굴러갔어요.
참조:https://github.com/dbeaver/dbeaver/releases https://www.postgresql.org/docs/11/sql-createprocedure.html https://www.postgresql.org/docs/11/sql-createfunction.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달
이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다.
국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소.
지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
# su - postgres
$ psql -c "select version();"
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 11.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit
(1 row)
create table t_log (
id bigserial,
log_level varchar(100),
log_info varchar(100),
log_timestamp timestamp
)
;
CREATE OR REPLACE PROCEDURE sp_write_log (
iv_log_level in varchar,
iv_log_info in varchar
) AS
$body$
declare
BEGIN
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
END;
$body$
LANGUAGE 'plpgsql';
select 호출 사용하기
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+---------------
(0 rows)
postgres=# select sp_write_log('a','a');
ERROR: sp_write_log(unknown, unknown) is a procedure
LINE 1: select sp_write_log('a','a');
^
HINT: To call a procedure, use CALL.
콜 호출을 사용해야 합니다
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+---------------
(0 rows)
postgres=# call sp_write_log('a','a');
CALL
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+----------------------------
1 | a | a | 2019-10-21 09:47:40.235877
(1 row)
commit, rollback 태그 추가 CREATE OR REPLACE PROCEDURE sp_write_log2 (
iv_log_level in varchar,
iv_log_info in varchar
) AS
$body$
declare
BEGIN
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
rollback;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
commit;
END;
$body$
LANGUAGE 'plpgsql';
postgres=# call sp_write_log('a','a');
CALL
postgres=# call sp_write_log('a','a');
CALL
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+----------------------------
1 | a | a | 2019-10-21 10:07:00.627889
2 | a | a | 2019-10-21 10:07:05.477492
(2 rows)
Sequence도 굴러갔어요.
참조:https://github.com/dbeaver/dbeaver/releases https://www.postgresql.org/docs/11/sql-createprocedure.html https://www.postgresql.org/docs/11/sql-createfunction.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달
이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다.
국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소.
지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
CREATE OR REPLACE PROCEDURE sp_write_log2 (
iv_log_level in varchar,
iv_log_info in varchar
) AS
$body$
declare
BEGIN
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
rollback;
INSERT INTO t_log(log_level,log_info,log_timestamp)
VALUES (iv_log_level,iv_log_info,clock_timestamp())
;
commit;
END;
$body$
LANGUAGE 'plpgsql';
postgres=# call sp_write_log('a','a');
CALL
postgres=# call sp_write_log('a','a');
CALL
postgres=# select * from t_log;
id | log_level | log_info | log_timestamp
----+-----------+----------+----------------------------
1 | a | a | 2019-10-21 10:07:00.627889
2 | a | a | 2019-10-21 10:07:05.477492
(2 rows)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.