아무것도 반환하지 않는 함수를 만드는 방법
함수를 작성하고 싶습니다.pl/pgsql
나는 Postgres Enterprise Manager v3를 사용하고 셸을 사용하여 함수를 만들고 있지만 셸에서는 반환 유형을 정의해야 합니다.반환 유형을 정의하지 않으면 함수를 만들 수 없습니다.
반환 결과가 없는 함수, 즉 새 테이블을 만드는 함수를 어떻게 만들 수 있습니까?
사용하다RETURNS void
아래와 같이:
CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$
#variable_conflict use_variable
DECLARE
curtime timestamp := now();
BEGIN
UPDATE users SET last_modified = curtime, comment = comment
WHERE users.id = id;
END;
$$ LANGUAGE plpgsql;
PostgreSQL 11+:PROCEDURE
s
PostgreSQL 11은 기본적으로 아무것도 반환하지 않지만 다음과 같이 호출되는 함수를 소개합니다.CALL
보다는SELECT
,
반환 결과가 없는 함수, 즉 새 테이블을 만드는 함수를 어떻게 만들 수 있습니까?
이것처럼.
=# CREATE PROCEDURE create_table_foo()
AS $$
CREATE TABLE foo ( id int )
$$ LANGUAGE sql;
=# CALL create_table_foo();
=# \d foo;
Table "public.foo"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
다음과 같은 절차를 사용할 수 있지만 함수는 항상 무언가를 반환해야 합니다.
do $$
그리고 다음과 같은 정상적인 기능으로 시작합니다.
declare
...
그래도 기능을 수행하려면 반환 후에 void를 추가하면 됩니다.
오류가 표시되는 경우 승인된 답변에 추가query has no destination for result data
당신의 기능을 호출할 때, 당신은 아마도 사용하고 있을 것입니다.SELECT
당신의 기능 중 하나가 당신의 진술입니다.교체합니다.SELECT
와 함께PERFORM
그리고 나서 정상적으로 당신의 기능을 호출합니다.SELECT yourFunction()
.
참고:PERFORM
pl/pgsql 컨텍스트에서만 사용할 수 있습니다.링크 참조
언급URL : https://stackoverflow.com/questions/14216716/how-to-create-function-that-returns-nothing
'programing' 카테고리의 다른 글
postgres where 절 비교 타임스탬프 (0) | 2023.05.11 |
---|---|
2D 배열을 C++ 함수로 전달 (0) | 2023.05.11 |
SQL Server 2005의 날짜/시간에서 월 및 연도 가져오기 (0) | 2023.05.11 |
Bash를 사용하여 절대 경로를 현재 디렉터리가 지정된 상대 경로로 변환 (0) | 2023.05.11 |
jQuery에서 요소 "플래시"를 만드는 방법 (0) | 2023.05.11 |