Ășt 29. 1. 2019 v 13:50 odesĂlatel Hengky Lie <hengkyliwand...@gmail.com> napsal:
> Hi, > > I want to create a function to update my table (flag='9') and insert new > record (flag='0') with the rfidnumber specified in a parameter. > > This parameter may have several value seperated by space (ie. 11 22 33 44) > For this kind of parameters, PostgreSQL has a array type - for example a int[] can be perfect for this purpose If you still use a this format, then you can use a string_to_array function and searching in array so your UPDATE command should to look like UPDATE tblrfid SET flag = 9 WHERE flag = '0' and rfidnumber = ANY(string_to_array(znumber)) Regards Pavel > CREATE OR REPLACE FUNCTION public.fcreate_rfid ( > znumber varchar > ) > RETURNS boolean AS > $body$ > BEGIN > --update old record which has the same rfid number and flag='0' if exists > update tblrfid set flag='9' where flag='0' and rfidnumber in (znumber); > > -- generate new record > insert into tblrfid(tanggal, flag, rfidnumber) > select localtimestamp, '0', regexp_split_to_table(znumber, ' '); > > return true; > END; > $body$ > LANGUAGE 'plpgsql'; > > when i called this function using command : > > select fcreate_rfid('11 22 33 44'); > > This function fail to update the old record, but success to insert the new > record. > > Please help me how to fixed this problem. I know the problem is the update > command, but i don't know the correct it. Googling anywhere didn't find any > solution. > > Thank you > > > > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > Virus-free. > www.avg.com > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> > <#m_-6825970932945715657_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >