2011-03-28 2 views
2

에 의해 기능에서 변수를 선언하지만가 작동하지에 ... 아니 내가 포스트 그레스에서 변수를 선언 할 포스트 그레스

Declare 
    c varchar; 
    a integer; 
    b integer; 

    select b = count (*) from table 

    set a = 1 
     while a <= b 
begin 

    select c = [c] from table where id = a 

    if (c = '1') 
     insert into table2 select(*) from table 

end 


set a = a+1 

하지만 오류 오류 : 구문에서 오류 또는 근처 "VARCHAR" LINE 2 : C의 VARCHAR; 익명 PL/pgSQL의 블록을 사용할 수 없습니다 9.0 전에

http://www.postgresql.org/docs/current/static/sql-do.html

, 당신은 것입니다 : ^ 나는 사람이 당신은 9.0에 있다면 당신은 DO 문을 사용하여 익명 블록을 사용하여 나에게

답변

8

을 도울 수 있기를 바랍니다 이를위한 함수를 생성해야합니다.

또한 pl/pgSQL에 대한 구문이 완전히 잘못되었습니다.

동일한 줄에 할당 및 WHILE 문을 사용할 수 없습니다. WHILE 루프에 대한 다른 requird 키워드도 누락되었습니다.

올바른 구문을 알아 보려면 설명서를 참조하십시오 :

http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#AEN50163

구문을 변수로 선택에서 값을 읽어도 잘못된 것입니다.

는 SELECT의 결과를 검색 할 수있는 올바른 구문은 다음과 같습니다뿐만 아니라 이것에 대한

SELECT count(*) 
    INTO b 
FROM some_table; 

체크 아웃 설명서를 :

http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW