pgsql中的存储过程

时间:2015-07-23 12:02:15

标签: mysql postgresql stored-procedures

我对PostgreSQL(pgSQL)中的存储过程不熟悉。我需要一些帮助来解决我的问题。我正在从oracle到PostgreSQL进行迁移过程,因为我使用了一些存储过程概念。我已经尝试在SQL存储过程中使用SQL,但是我试图转换为pgSQL的代码相同。我已经逐行地遇到了一个问题。可以帮助我将相同的代码SQL转换为PostgreSQL。我已经在下面附加了我的SQL过程代码。任何人都可以建议我正确处理代码。

代码:

delimiter;
drop procedure if exists patient_form_values;
delimiter $$
create procedure patient_form_values()

begin

declare columnName varchar(200) ;
declare done tinyint default 0;
declare cur1 cursor for select distinct COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'CASESHEETCOMPLAINTS' and table_schema='hms_empty_copy';
declare continue handler for not found set done = 1;
open cur1;
read_loop : loop
fetch from cur1 into columnName;
if done then leave read_loop; 
end if;

set @insertValues := concat('INSERT INTO patient_form_temp(patient_id, form_template_id, creator_id, created_date)
SELECT c.patient_id as patient_id, 41 AS form_template_id, 2 AS creator_id, c.created_date AS created_date 
FROM CASESHEETCOMPLAINTS c 
WHERE c.', columnName,' IS NOT NULL GROUP BY c.patient_id, c.created_date'); 

select @insertValues;

prepare stmt from @insertValues;
execute stmt;
end loop;
close cur1;
end $$ 
delimiter ;
call patient_form_values();
drop procedure if exists patient_form_values;

--To delete the empty records.
DELETE FROM patient_form WHERE id NOT IN(SELECT patient_form_id FROM patient_form_value);


insert into patient_form(patient_id, form_template_id, creator_id, created_date)select patient_id, form_template_id, creator_id, created_date from patient_form_temp GROUP BY patient_id, created_date

0 个答案:

没有答案