[SQL] 포스트 그레스 동적 쿼리 기능
SQL포스트 그레스 동적 쿼리 기능
나는 쿼리를 실행하고 테이블 이름과 기능에 지정된 열 이름의 존재의 arugments와 결과를 반환하는 함수를 작성해야합니다. 나는 현재이 있습니다 :
CREATE OR REPLACE FUNCTION qa_scf(tname character varying, cname character varying)
RETURNS SETOF INT AS
$BODY$
BEGIN
RETURN QUERY SELECT * FROM tname WHERE cname !='AK' AND cname!='CK';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
이 때 실행 " 'TNAME'데없는 관계"나에게 오류를 제공합니다. 어떤 도움이 감사합니다, 그래서 나는 포스트 그레스에 대한 생성 기능에 새로운 해요. 반환 INT가 잘못 같은 느낌,하지만 난 그것을 반환 된 행에 대한 모든 열을 반환하기 위해 넣어 다른 모르겠어요. 감사!
해결법
-
==============================
1.당신은 그런 식별자 대신에 변수를 사용할 수 없습니다. 당신은 동적 쿼리를 할 필요가있다. 그것은 다음과 같이 보일 것입니다 :
당신은 그런 식별자 대신에 변수를 사용할 수 없습니다. 당신은 동적 쿼리를 할 필요가있다. 그것은 다음과 같이 보일 것입니다 :
EXECUTE 'SELECT * FROM ' || quote_ident(tname) || ' WHERE ' || quote_ident(cname) || ' NOT IN (''AK'',''CK'');' INTO result_var;
당신은 PostgreSQL의 9.1을 사용하여 이상하는 경우에는 훨씬 쉽게이 문자열을 구성하게 형식 () 함수를 사용할 수 있습니다.
-
==============================
2.테이블 및 컬럼 이름 동적 동적 문으로 실행하는 문자열을 구성하는 파라미터 또는 변수없이 지정 될 수 없다. 포스트 그레스는 동적 문을 실행에 대한 훌륭한 소개 문서를 가지고있다. 그것은 제대로에서 quote_ident () 또는을 quote_literal와 식별자와 리터럴을 인용하는 것이 중요합니다 (). 형식 () 함수는 정리의 동적 SQL 문 건설하는 데 도움이됩니다. 당신이 SETOF INTEGER를 반환하는 함수를 선언하기 때문에, 당신은 당신이하지 *, 원하는 정수 필드를 선택해야합니다.
테이블 및 컬럼 이름 동적 동적 문으로 실행하는 문자열을 구성하는 파라미터 또는 변수없이 지정 될 수 없다. 포스트 그레스는 동적 문을 실행에 대한 훌륭한 소개 문서를 가지고있다. 그것은 제대로에서 quote_ident () 또는을 quote_literal와 식별자와 리터럴을 인용하는 것이 중요합니다 (). 형식 () 함수는 정리의 동적 SQL 문 건설하는 데 도움이됩니다. 당신이 SETOF INTEGER를 반환하는 함수를 선언하기 때문에, 당신은 당신이하지 *, 원하는 정수 필드를 선택해야합니다.
CREATE OR REPLACE FUNCTION qa_scf(tname text, cname text) RETURNS SETOF INTEGER AS $BODY$ BEGIN RETURN QUERY EXECUTE format( 'SELECT the_integer_field FROM %I WHERE %I NOT IN (%L, %L)', tname, cname, 'AK', 'CK' ); END; $BODY$ LANGUAGE plpgsql;
from https://stackoverflow.com/questions/10639963/postgres-dynamic-query-function by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버 2008 - 도움말 쓰기 단순 INSERT 트리거 (0) | 2020.05.05 |
---|---|
[SQL] SQL Server Express는 LocalDB를 원격으로 연결할 수 있습니다? (0) | 2020.05.05 |
[SQL] MySQL의 연결 연산자 (0) | 2020.05.04 |
[SQL] 어떻게 PostgreSQL의 ORDER BY 절에서 별칭을 사용 하는가? (0) | 2020.05.04 |
[SQL] 클러스터 인덱스의 성능 향상은 기본 키를 GUID (0) | 2020.05.04 |