Обсуждение: Calling Postgresql Function to delete user data
Hi ,
I have created this function to remove UserDataAccountid from both tables
UserAccountDetails and UserAC
CREATE OR REPLACE FUNCTION DeleteUserData(ACDetailsID int[])
RETURNS void AS $$
DECLARE _id int;
BEGIN
-- postgresql has no table type, use a int array instead
FOR _id IN array_lower(ACDetailsID,1) .. array_upper(ACDetailsID,1)
LOOP
DELETE FROM UserAccountDetails WHERE UserDataAcountId= _id;
DELETE FROM UserAC WHERE UserDataAcountId= _id;
END;
END LOOP;
EXCEPTION WHEN OTHERS THEN
RAISE WARNING 'some issue %', SQLERRM;
END;
$$ LANGUAGE plpgsql;
RETURNS void AS $$
DECLARE _id int;
BEGIN
-- postgresql has no table type, use a int array instead
FOR _id IN array_lower(ACDetailsID,1) .. array_upper(ACDetailsID,1)
LOOP
DELETE FROM UserAccountDetails WHERE UserDataAcountId= _id;
DELETE FROM UserAC WHERE UserDataAcountId= _id;
END;
END LOOP;
EXCEPTION WHEN OTHERS THEN
RAISE WARNING 'some issue %', SQLERRM;
END;
$$ LANGUAGE plpgsql;
Now I am calling this function to delete userdataacountid from both tables, say i have a user with userdataacountid '5', how can i delete this user by calling this function , i have tried
select DeleteUserData(5);
and
select * from DeleteUserData(5);
its not working ,
thanks
select DeleteUserData(5);
and
select * from DeleteUserData(5);
its not working ,
thanks
On 11/02/2012 19:53, Rehan Saleem wrote: > Hi , > I have created this function to remove UserDataAccountid > from both tables > UserAccountDetails and UserAC > CREATE OR REPLACE FUNCTION DeleteUserData(ACDetailsID int[]) > RETURNS void AS $$ > DECLARE _id int; > BEGIN > -- postgresql has no table type, use a int array instead > FOR _id IN array_lower(ACDetailsID,1) .. array_upper(ACDetailsID,1) > LOOP > DELETE FROM UserAccountDetails WHERE UserDataAcountId= > _id; > DELETE FROM UserAC WHERE UserDataAcountId= _id; > END; > END LOOP; > EXCEPTION WHEN OTHERS THEN > RAISE WARNING 'some issue %', SQLERRM; > END; > $$ LANGUAGE plpgsql; > > Now I am calling this function to delete userdataacountid > from both tables, say i have a user with userdataacountid '5', how can i delete > this user by calling this function , i have tried > > select DeleteUserData(5); > and > select * from DeleteUserData(5); > > its not working , > thanks I would guess that the error you're getting is: ERROR: function deleteuserdata(integer) does not exist LINE 1: select DeleteUserData(5); ^ This is happening because your function takes an array, not a single integer. PostgreSQL can automatically cast from a string to an array if the string is properly formatted: select DeleteUserData('{5}'); Hope this helps.