temp_table에 데이터를 삽입하고 결과를 분석 한 후 테이블을 잘라내려고합니다. -PERFORM을 사용하여 SELECT 문의 문자열을 임시 테이블에 삽입하십시오.
을ERROR: missing FROM-clause entry for table "temp_table" Where: PL/pgSQL function validation() line 21 at IF
여기
내 staging.validation 테이블 보이는 방법 :
나는이 기능을 실행 할 때마다CREATE OR REPLACE FUNCTION validation()
RETURNS text AS $$
DECLARE counter INTEGER;
DECLARE minsid INTEGER;
DECLARE maxsid INTEGER;
DECLARE rec RECORD;
DECLARE stmt varchar;
BEGIN
SELECT MIN(sid) INTO minsid FROM staging.validation;
SELECT MAX(sid) INTO maxsid FROM staging.validation;
CREATE TEMPORARY TABLE temp_table (col1 TEXT, col2 INTEGER, col3 BOOLEAN) ON COMMIT DROP;
FOR counter IN minsid..maxsid LOOP
RAISE NOTICE 'Counter: %', counter;
SELECT sql INTO stmt FROM staging.validation WHERE sid = counter;
RAISE NOTICE 'sql: %', stmt;
PERFORM 'INSERT INTO temp_table (col1, col2, col3) ' || stmt;
IF temp_table.col3 = false THEN
RAISE NOTICE 'there is a false value';
END IF;
END LOOP;
END; $$
LANGUAGE plpgsql;
SELECT * FROM validation();
나는 오류가 발생 : 여기
https://docs.google.com/spreadsheets/d/1bXO9gqFS-GtcC1qJtgNbFkR6ygOuPtR_RZoU7VNhgrI/edit?usp=sharing
'stmt'의 값은 무엇입니까 ?? 그리고 그 오류는 어디에 있습니까? '공연'? –
'stmt'는 SQL 문이며,'staging.validation' 테이블에서 그 값을 가져옵니다. 나는이 문제가 IF 상태라고 생각한다. – hky404
''무언가를 수행하라 '는''무언가를 선택하는' '과 거의 동일하다는 것을 알고 계십니까? 아마 대신'EXECUTE' 문이 필요하겠습니까? – Abelisto