2014-09-20 4 views
0

의 기능을 통해 조작데이터의 PostgreSQL

CREATE TABLE tbl_products 
(
    prod_id serial NOT NULL, 
    prod_name text, 
    prod_qty integer, 
    prod_batch text, 
    prod_group text 
) 

및 데이터 I는 다른 기능에 tbl_productsInsertUpdate하고있어 이때


INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('BIOTOR 10 TAB', 10, 'bat6', 'A'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('RAMISAVE H 5 MG CAP', 12, 'bat7', 'D'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('TREND XR 500 MG TAB', 40, 'bat67', 'H'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('TAZLOC 80', 78, 'bat9', 'H'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('BUDECORT 200 Rotocap', 11, 'bat1', 'H'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('ESOZ D 20 MG CAP', 45, 'bat78', 'F'); 
INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES ('LSR BABY FEEDING NIPPLES', 87, 'bat99', 'G'); 
있다 , 그럼 insertupdate을 하나의 Fucntion ..으로 감싸는 좋은 방법이 있습니까?
참고 : prod_name 중복

+1

http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL- 무정전 전원 장치 예 –

답변

0

희망이 작동하지 않습니다,

create or replace function ins_upd(prod_name text, prod_qty int, prod_batch text, prod_group text) returns text as 
$$              --  1      2     3       4 
declare 
    sql_job varchar; -- optional 
    sql_dml text; 
    pdt_id record; 
begin 
    if (select exists (select prod_id from tbl_products p where p.prod_name=$1)) = false then 
    sql_dml = 'INSERT INTO tbl_products(prod_name, prod_qty, prod_batch, prod_group)VALUES 
    ('''||$1||''', '||$2||', '''||$3||''', '''||$4||''')'; 
    sql_job= 'New Product '||$2||' Added !'; -- optional 
else 
for pdt_id in select prod_id from tbl_products p where p.prod_name=$1 
loop 
    sql_dml = 'UPDATE tbl_products SET prod_name='''||($1)||''', prod_qty='||$2||', 
    prod_batch='''||$3||''', prod_group='''||$4||''' WHERE prod_id = '||pdt_id.prod_id||''; 
end loop; 
    sql_job= 'Product '||$2||' Updated !'; -- optional 
end if; 
    execute sql_dml; 
return sql_job; --optional 
end; 
$$ 
language plpgsql 
+0

다행입니다. !!!!!!! 그것은 일했다 !!!!!!!! –