I have made composite type named t_user_type:
CREATE TYPE t_user_type AS
(uid integer,
firstname character varying,
lastname character varying,
companyname character varying,
email character varying,
sip_phone integer);
...and I need to cast string to that type, so I do
SELECT '(11423, FirstName, LastName, Company, [email protected], 204)' :: t_user_type;
everythin is fine. No errors, nothing. But when I do that same thing using procedure, I get this error: Invalid input syntax for integer: "(11423," FirstName"," LastName"," Company"," [email protected]", 204)".
Here is my procedure:
CREATE OR REPLACE FUNCTION change_type(p_user character varying)
RETURNS void AS
$BODY$DECLARE
v_user_type t_user_type;
BEGIN
SELECT p_user :: t_user_type INTO v_user_type;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION change_type(character varying)
OWNER TO postgres;
And here is query that uses the procedure:
SELECT change_type(
'(11423, FirstName, LastName, Company, [email protected], 204)');
Can anybody tell me what am I doing wrong?