엄밀히 말하면 "plpgsql 스크립트"와 같은 것은 없습니다. PL / pgSQL은 PostgreSQL의 기본 절차 언어입니다. SQL 스크립트 또는 plpgsql 함수 / 프로 시저입니다. 귀하의 예는 SQL 스크립트를 나타내는 것 같습니다.
대신 여러 인수를 사용하는 (서버 측) plpgsql (또는 sql) 함수 를 만들 수 있습니다 . 인수가있는 한 매우 간단 values
합니다. 인수에 식별자가 포함되어 있으면 조금 더 복잡해집니다. 그런 다음 동적 SQL 및와 함께 PL / pgSQL을 사용해야 EXECUTE
합니다.
PL / pgSQL은 PostgreSQL 9.0 이상에서 기본적으로 사전 설치됩니다. 그러나 Postgres 8.3의 데이터베이스마다 한 번씩 설치해야합니다.
CREATE LANGUGAGE plpgsql;
버전에 대하여 : 현재 버전의 PostgreSQL로 업그레이드 하는 것을 고려해야 합니다. v8.3은 2013 년 초에 수명이 다한 지금 매우 오래되었습니다.
준비된 SQL 스크립트가있는 것 같으므로 SQL 함수를 보여 드리겠습니다. 두 개의 정수 인수가있는 간단한 더미 함수 :
CREATE OR REPLACE FUNCTION func(int, int)
LANGUAGE sql RETURNS void AS
$func$
UPDATE tbl1 SET col1 = $1 WHERE id = $2;
UPDATE tbl2 SET col1 = $1 WHERE id = $2;
$func$;
dba.SE 또는 SO 에서 plpgsql에 대한보다 정교한 예제를 찾을 수 있습니다 .
이 함수를 호출하고 쉘 스크립트에서 매개 변수를 전달할 수 있습니다. 정수 매개 변수에 입력 매개 변수를 사용하는 쉘 스크립트 호출의 기본 예제 (필요한 값 주위에 작은 따옴표가 없음) :
psql mydb -c "SELECT func($1, $2)"
또는 모든 데이터 유형이있는 경우 :
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
하나의 명령 문자열을 실행 한 다음 종료합니다. 매뉴얼에서 psql의 명령 행 인수에 대한 추가 정보 .
-v
psql 의 주장을 찾고 있다고 생각합니다 .