2
SQL 쿼리에 매개 변수로 내 쿼리를 전달하는 방법을 찾지 못하는 것 같습니다. 내 문제는 테이블 'my_employees1'동적 수 있습니다.은 sql-function에 동적 쿼리를 전달할 수 없습니다.
DROP FUNCTION function_test(text);
CREATE OR REPLACE FUNCTION function_test(text) RETURNS bigint AS '
DECLARE ret bigint;
BEGIN
SELECT count(mt.id) INTO ret
FROM mytable as mt
WHERE mt.location_id = 29671
--and mt.employee_id in (SELECT id from my_employees1);
--and mt.employee_id in ($1);
$1;
RETURN ret;
END;
' LANGUAGE plpgsql;
select function_test('and mt.employee_id in (SELECT id from my_employees1)');
select function_test('SELECT id from my_employees1');
이 문제는 동적 SQL로 해결할 수 있습니다. [시작하려면 여기를보십시오] (http://www.postgresql.org/docs/8.1/static/ecpg-dynamic.html)를 가져 가십시오. 코드의 어느 시점에서 쿼리 이름과 테이블 열의 이름을 알아낼 수 있어야합니다. 또한 전체 SQL 문은 동적 문자열이어야합니다. 임의로 SQL 코드에 텍스트를 추가 할 수는 없습니다. 함수에서 동적 인 것을 만들기 위해 텍스트 변수를 기존 SQL 코드의 문자열에 추가/삽입합니다. 이제이 작업을 수행 할 수 있지만 리팩터링 할 수 있는지 알아보기 위해 데이터 모델을 살펴 보는 것이 좋습니다. ** 동적 SQL은 –