database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9611 게시물 읽기
No. 9611
function의 Table Value Parameter
작성자
지현명(gwise)
작성일
2015-12-04 14:14
조회수
5,061

ms sql의 스토어 프로시저 파라미터에 TVP를 적용해서 만든느 방법을 Postgresql에서도 되는지 테스트 중인데 아직 답을 찾지 못하고 있습니다.

CREATE TABLE public.names
(
  id integer ,
  name character varying
)

CREATE TABLE public.names2
(
  id integer ,
  name character varying
)


create or replace function p_test(emp names) 
returns void as
$$
begin
 insert into names2
 select emp.id, emp.name;

end;
$$ language plpgsql;

select p_test(t.* ) from names t ;

위에꺼 실행 시키면 ROW단위로 처리가 되는데 MS SQL 처럼 p_test함수 파라미터로 테이블 데이터를 한번에 옮길 수도 있나요?

 

 MS SQL의  TVP기능 참조 : 

https://msdn.microsoft.com/en-us/library/bb510489(SQL.100).aspx

이 글에 대한 댓글이 총 1건 있습니다.

PostgreSQL에서는

테이블의 어떤 레코드세트를 함수의 입력 매개변수로 사용하겠다면,

커서를 사용합니다.

 

첫번째 쿼리에서 cursor를 만들고,

그 커서를 다음 쿼리에서 사용하는 함수 호출의 그 매개변수로 사용합니다.

 

예제 구문은 이런식이 될 것 같네요.

declare curs1 cursor for select * from names;

select func1(curs1);

close curs1;

 

func1 함수는 plpgsql 에서 커서를 입력 매개변수로 받은 경우 어떻게 푸는지 살펴보시면 될 것 같습니다,

 

김상기(ioseph)님이 2015-12-04 15:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9614oracle에서 postgresql 을 db link 사용중 select 결과 컬럼 [1]
손님
2015-12-10
5143
9613postgre sql insert update 동시에 진행되나요? [3]
변상희
2015-12-08
5428
9612select 속도가 너무 느립니다ㅠㅠ [1]
이성민
2015-12-07
5274
9611function의 Table Value Parameter [1]
지현명
2015-12-04
5061
9610Pro*C --> ECPG 변환 관련 질문 입니다. [1]
힛잉
2015-12-03
5035
9608테이블 oid가 데이터베이스 내에서 확인이 안되는 경우 [2]
김성환
2015-12-01
4988
9607도와주세요. 고수님 [2]
어려워
2015-11-27
4967
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.072초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다