함수 내에서 뷰를 만들려고 할 때 ERROR가 발생합니다 : $ 1 매개 변수가 없습니다. 이것은 샘플 코드입니다.
Begin
CREATE VIEW artikelnr AS
SELECT datum, 'uitgifte' as "type", CASE WHEN 'test'='test' THEN 0 END as "aantal ontvangen", aantal as "aantal uitgegeven"
FROM uitgifteregel
JOIN artikel ON artikel.artikelnr = new.artikelnr
JOIN uitgifte ON uitgifte.uitgiftenr = uitgifteregel.uitgiftenr
UNION
SELECT datum, 'ontvangst' as "type", aantal as "aantal ontvangen" , CASE WHEN 'test'='test' THEN 0 END as "aantal uitgegeven"
FROM ontvangstregel
JOIN artikel ON artikel.artikelnr = new.artikelnr
JOIN ontvangst ON ontvangst.ontvangstnr = ontvangstregel.ontvangstnr;
Return new;
end;
우리는 값 그것이해야처럼 작동 1 라인 7 new.artikelnr 교체 할 때,하지만 기능은 다른 artikelnr의 작업을 할 필요가있다.
예를 행 7 : JOIN artikel ON artikel.artikelnr = new.artikelnr
가 올바른 방향으로 우리를 가리 킵니다하시기 바랍니다.
응답 : 교육적 목적으로이보기를 만들어야합니다. 나는 뷰의 이미지와 우리의 데이터베이스의 tablestructure을 업로드 한 :
http://img208.imageshack.us/img208/5655/tablesk.jpg
우리의 첫 번째 목표는 하나 개의 관련 기사에 대한 뷰를 만드는 것이 었습니다. 우리는 다음 코드로이 달성 : 우리가 달성 할 수
CREATE VIEW artikelmutatiestotaal AS
SELECT null as "datum",'totaal' as "type",sum(ontvangstregel.aantal)as "aantal ontvangen",sum(uitgifteregel.aantal) as "aantal uitgegeven"
FROM uitgifteregel, ontvangstregel
UNION
SELECT datum,'uitgifte' as "type", CASE WHEN 'test'='test' THEN 0 END as "aantal ontvangen", aantal as "aantal uitgegeven"
FROM uitgifteregel
JOIN artikel ON artikel.artikelnr = 1
JOIN uitgifte ON uitgifte.uitgiftenr = uitgifteregel.uitgiftenr
UNION
SELECT datum,'ontvangst' as "type", aantal as "aantal ontvangen" , CASE WHEN 'test'='test' THEN 0 END as "aantal uitgegeven"
FROM ontvangstregel
JOIN artikel ON artikel.artikelnr = 1
JOIN ontvangst ON ontvangst.ontvangstnr = ontvangstregel.ontvangstnr
유일한 것은 우리의 삽입 문에서 artikelnr의 값을 얻는 것입니다. 우리가
JOIN artikel ON artikel.artikelnr = 1
에 맞춰 7 JOIN artikel ON artikel.artikelnr = new.artikelnr
를 교체 할 때
CREATE FUNCTION addview() returns trigger as '
Begin
CREATE VIEW artikelnr AS
SELECT null as "datum",'totaal' as "type",sum(ontvangstregel.aantal)as "aantal ontvangen",sum(uitgifteregel.aantal) as "aantal uitgegeven"
FROM uitgifteregel, ontvangstregel
UNION
SELECT datum,'uitgifte' as "type", CASE WHEN 'test'='test' THEN 0 END as "aantal ontvangen", aantal as "aantal uitgegeven"
FROM uitgifteregel
JOIN artikel ON artikel.artikelnr = new.artikelnr
JOIN uitgifte ON uitgifte.uitgiftenr = uitgifteregel.uitgiftenr
UNION
SELECT datum,'ontvangst' as "type", aantal as "aantal ontvangen" , CASE WHEN 'test'='test' THEN 0 END as "aantal uitgegeven"
FROM ontvangstregel
JOIN artikel ON artikel.artikelnr = artikelnr
JOIN ontvangst ON ontvangst.ontvangstnr = ontvangstregel.ontvangstnr
end;
'language plpgsql;
는 그것을 잘 작동합니다. 내 질문을 매우 unstructured 게시 죄송합니다. 나는이 질문에 답하기 위해 어떤 정보가 중요한지 잘 모른다.
내 대답에 대한 새 편집보기 – zendar
왜 이름이 같은 여러보기를 만들려고합니까? 그게 효과가 없을거야. 그리고 각 견해마다 다른 예술가가 있습니까? 당신의 목표는 무엇입니까? 해결하려는 근본적인 문제는 무엇입니까? –