2013-01-10 2 views
2

postgresql을 사용하여 함수를 만들었습니다. 하지만이 함수는 오류를 반환하려고합니다. 오류 "ERROR: syntax error at or near "||"postgresql의 concat

CREATE OR REPLACE FUNCTION search_address_book(address_ids character) 
    RETURNS void AS 
$BODY$ 
SET sqlStatement = 'select * from addressbook'; 
SET address_ids = 'Post' || 'greSQL'; 
$BODY$ 
LANGUAGE 'sql' STABLE 
COST 100; 

내 서버 버전은 8.3.14입니다. 잘못인가? 어떻게 내가 postgresql에서 두 문자열 concat합니까? 인용 언어 이름 ''sql'` 또는` '를 사용하는 것은 지원되지 않는 plpgsql'`is 9.1 이상으로 이동할 때 더 이상 작동하지 않습니다

CREATE OR REPLACE FUNCTION search_address_book(address_ids character) 
    RETURNS void AS 
$BODY$ 
declare 
    sqlStatement text; 
    address_ids text; 
begin 
    sqlStatement := 'select * from addressbook'; 
    address_ids := 'Post' || 'greSQL'; 
end 
$BODY$ 
LANGUAGE plpgsql STABLE; 
+1

참고 : –

+0

@a_horse_with_no_name : 좋은 조언. 그러나 정확하게 말하면, 나는 매뉴얼을 인용했다. (http://www.postgresql.org/docs/current/interactive/sql-createfunction.html) :'이전 버전과의 호환성을 위해 이름은 작은 따옴표로 묶을 수있다 .' –

+0

@ErwinBrandstetter : ** 다음 버전으로 이동 **합니다 ** : http://postgresql.1045698.n5.nabble.com/language-name-case-sensitivity-also-known-as-plpgsql-PLpgSQL -tp5595577.html –

답변

4

당신이 plpgsql 기능을 필요로 변수를 사용하려면 . ** 작은 따옴표없이 ** ** 언어를 지정해야합니다.
+0

고맙습니다. 작동합니다. – ishk

+0

작은 따옴표없이'LANGUAGE plpgsql'을 사용하십시오. 이것은 식별자이므로 따옴표는 이전 버전과의 호환성을 위해서만 용인되며 허용되지 않습니다. –

+0

@ 에윈 업데이트 됨. –