2011-03-12 3 views
3

내가 pgAdmin 사용하여 포스트 그레스 8.4에서 함수를 만들려고 해요을 만들려고 내가 이것을 실행하려고하면 나는 다음과 같은 코드가 삽입 기능

CREATE OR REPLACE FUNCTION spcwriteperson(IN fname varchar(20)) 
    RETURNS VOID AS 
$BODY$ 
    INSERT INTO person ("firstName") VALUES(fname); 
$BODY$ 
    LANGUAGE sql VOLATILE 
    COST 100; 

을 가지고, 그것은 가치로 그 FNAME (FNAME을 불평)는 열이 아닙니다. 나는 MySQL과 SQL Server에서 sprocs와 함수를 작성하려고한다. 왜 이것이 작동하지 않거나 내가 뭘 잘못하고 있는지에 대한 도움?

답변

7

, 당신은 PL/PGSQL를 사용할 수있다. PL/PGSQL은 제어 구조, 변수 및 모든 재미있는 것들을 가지고 있습니다. PostgreSQL의 SQL 언어 구현은 어떤 기능을 사용할 수 있는지에 대해 훨씬 엄격합니다. SQL을 훌륭하게 구현했지만 쿼리 언어이며 절차 적 프로그래밍 언어는 아닙니다.

+1

''person' 테이블에'fid'라는 ID 필드가 있으면'fid'를 반환하고 싶습니다. 'INSERT INTO person (firstName) VALUES (fname) RETURNING fid;'? –

+0

삽입물의 기본 결과 (예 : 삽입 된 X 레코드)를 어떻게 반환 할 수 있습니까? –

6

SQL 언어 함수의 매개 변수에는 $1, $2 등의 번호가 매겨져 있습니다. 자세한 내용은 the documentation을 참조하십시오. 명명 된 매개 변수 및 고급 기능을 원하면 pgSQL을 사용할 수 있습니다.

CREATE OR REPLACE FUNCTION spcwriteperson(fname varchar(20)) RETURNS VOID AS 
$$ 
BEGIN 
    INSERT INTO person (firstName) VALUES (fname); 
END 
$$ 
    LANGUAGE 'plpgsql'; 

PL/PGSQL 또한 SQL 서버의 T-SQL과 같은 더 당신에게 언어를 줄 것이다 : 당신은 번호 매개 변수를 사용하여 마음에 들지 않으면