我写了一个postgres的存储过程 编译总报错,哪个高手帮忙看看,多谢CREATE OR REPLACE FUNCTION test(IN in_num integer) RETURNS integer AS
$BODY$
DECLARE
 ln_tmp INTEGER;
 l_id INTEGER;
begin 
for l_id in 1..9 loop
select id into ln_tmp from why
where id=i;
insert into why1 values (ln_temp);
end loop;
return 0;
end;
$BODY$
LANGUAGE 'sql' VOLATILE;
ALTER FUNCTION test(IN integer) OWNER TO gpadmin;编译时 报错信息如下
---------------------------
pgAdmin III
---------------------------
发生了一个错误:
 
ERROR:  syntax error at or near "INTEGER"
LINE 4:  ln_tmp INTEGER;
                ^
---------------------------
确定   
---------------------------

解决方案 »

  1.   

    LANGUAGE 'sql' VOLATILE;
    改成
    LANGUAGE plpgsql;csdn=# CREATE OR REPLACE FUNCTION test(IN in_num integer) RETURNS integer AS
    csdn-# $BODY$
    csdn$# DECLARE
    csdn$#  ln_tmp  INTEGER;
    csdn$#  l_id    INTEGER;
    csdn$# begin
    csdn$#  for l_id in 1..9 loop
    csdn$#          select id into ln_tmp from why
    csdn$#          where id=i;
    csdn$#          insert into why1 values (ln_temp);
    csdn$#  end loop;
    csdn$#  return 0;
    csdn$# end;
    csdn$# $BODY$
    csdn-# LANGUAGE plpgsql;
    CREATE FUNCTION
    csdn=#