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 6659 게시물 읽기
No. 6659
PostgreSQL 8.1.3 프로시져 질문입니다
작성자
권용재(amadeusj)
작성일
2006-05-03 18:05
조회수
3,592

PostgreSQL 8.1.3 를 리눅스에서 설치 했습니다

Procedure 를 정의하려하니 에러가 나네요.

 

create or replace procedure cs_test is

begin

.......

end;

이런식으로 설치하면되는거 아닌가요?

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

pgsql에는 create [or replace] procedure 라는 문법이 없습니다~

create [or replace] function 쪽을 보시면 되겠습니다~

 

http://database.sarang.net/database/postgres/manual/manual-8.0/sql-createtrigger.html

 

http://database.sarang.net/database/postgres/manual/manual-8.0/xplang.html

 

 

신기배(소타)님이 2006-05-03 18:20에 작성한 댓글입니다.

답변 감사합니다

그렇다면 function 이 procedure 와 이름만 틀릴뿐 기능은 똑같은건가요

권용재(amadeusj)님이 2006-05-03 18:25에 작성한 댓글입니다.

구현하시는 것에 따라 다른데 부족한 점이 있어도 다양한 확장으로 가능하실 겁니다 ㅎㅎ

지원되는 프로시저 언어가 많거든요. 서버에 특정 값을 유지시키게 할 수도 있고요 ㅋ

신기배(소타)님이 2006-05-03 19:02에 작성한 댓글입니다.

답변감사합니다

예제를 보고 해보는데 문서마다 예제가 틀리고....

해봐도 에러만나고...

 

create or replace function cs_test is

begin

select * from test;

end;

이런식으로 간단하게 예제 하나만 보여주실수 있나요.

그리고 프로시저를 정의 하다가 중간에 ';' 를 만나면 명령이 실행이 되버립니다

MySql 의 delimiter // (';' 대신에 임시로 '//' 를 실행으로) 같은 명령어는 없나요

권용재(amadeusj)님이 2006-05-03 19:18에 작성한 댓글입니다.

샘플에 보시면요

 

CREATE FUNCTION add(integer, integer) RETURNS integer
    AS 'select $1 + $2;'
    LANGUAGE SQL
    IMMUTABLE
    RETURNS NULL ON NULL INPUT;

 

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

 

라고 되어 있습니다. 문법을 보시면 함수이름(integer, integer) 처럼 함수의 원형을 지정하고 RETURNS integer로 이 함수의 리턴타입을 지정해 줍니다.

그리고 AS 후에 ' 나 $$ 로 감싸지는 함수의 내용을 적어주시면 됩니다.

신기배(소타)님이 2006-05-03 22:07에 작성한 댓글입니다.

create or replace function cs_test is

begin

select * from test;

end;

 

이것을 그대로 pgsql 에서 사용한다면 이런식이 되겠쬬

 

create or replace function cs_test() returns setop record as $$

select * from test;

$$ language sql;

 

이러면 될거 같은데..

 

오라클이나 다른 DB 를 보면 function 과 procedure 를 구분하고 있습니다. (전 그것이 맞다고 봅니다.)

차이는 리턴값이 있느냐 없느냐 입니다.

 

function 은 리턴값을 가지고 procedure 의 경우 어떤 내용을 실행하고 끝내는 것을 말합니다.

pgsql 의 경우 상황에 따라 두가지 모두를 function 으로 처리할 수 있습니다.

굳이 따로 두실 필요는 없습니다.

 

tyro님이 2006-05-04 01:26에 작성한 댓글입니다. Edit

네 답변 감사합니다~^^

좋은 하루 되세요~

권용재(amadeusj)님이 2006-05-04 09:45에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6665기초적인 질문입니다
권용재
2006-05-06
3055
6664postmaster 실행시 "global/pg_control"에 퍼미션이 엄다고 나오네요 [1]
불량학상
2006-05-06
3892
6660gforge 설치 설명서 가지고 계신분.. [1]
이현석
2006-05-03
2536
6659PostgreSQL 8.1.3 프로시져 질문입니다 [7]
권용재
2006-05-03
3592
6658PostgreSQL 8.1.3 을 리눅스에 설치후 윈도우에서 접근 [1]
권용재
2006-05-03
3439
6657postgres 다운받는곳 아시는분.. [1]
이현석
2006-05-03
2556
6655An error occured in the logger.ERROR: relation "activity_log" does not exist [1]
박진석
2006-05-02
3141
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다