Asking for some PL/pgSQL Tips
От | tankgirl@worldonline.es |
---|---|
Тема | Asking for some PL/pgSQL Tips |
Дата | |
Msg-id | 6659511.996596073797.JavaMail.root@macaca.worldonline.es обсуждение исходный текст |
Список | pgsql-general |
Hello, Well right now I'm working with PL/pgsql... I have also faced up to the problem of returning more than one value from a function, and an array would be the ideal thing for that purpose, but as long as I wasn't able to find a way of returning or declaring arrays, I played a kind of trick concatenateing all the values I needed in a Text and filtering them in the function that receives them. I mean...I split the String up using some of the support functions of Postgres (trim(), substr(), ...) Well, this solution has worked, but I still wonder if there is a better way of doing it. Moreover, I have also a big problem with 'dynamic queries'. Basically I try to generate a query to add a new column to a table... Fist of all I have to check if the table that I want to alter exists and if it is not inherited by other tables, this is what I use PL/pgSQL for, but after checking that everything is allright when I try to generate the query it doesn't work. This is more or less what I'm trying to do... CREATE FUNCTION addColumn(oid, TEXT, TEXT) RETURNS text AS ' DECLARE -- Alias for the parameters name_atrib ALIAS FOR $2; name_type ALIAS FOR $3; name_table text; tuples RECORD; BEGIN -- I check if the OID belongs to a table nomb_tabla := oidToText($1); IF name_table = NULL THEN RAISE EXCEPTION '' The OID % doesn't belong to any table!!!'', $1; ELSE -- I check whether the table is inherited or not. SELECT INTO tuplas * FROM pg_inherits WHERE inhparent = $1; IF NOT FOUND THEN RAISE NOTICE ''This table can be altered''; EXECUTE ''ALTER TABLE ''||name_table || '' ADD COLUMN '' || name_atrib || name_type; END IF; END IF; END; ' LANGUAGE 'plpgsql'; I have tried using PERFOM instead of EXECUTE and also using the functions quote_indent(text) and quote_literal(text), but they are not even defined in the list of functions. Test=# \df quote_literal List of functions Result | Function | Arguments --------+----------+----------- (0 rows) Test=# \df quote_ident List of functions Result | Function | Arguments --------+----------+----------- (0 rows) Up to now, I don't now anything else to do :-( I look forward to receiving an answer in order to go on working on this. Sory for such a large, boring (and probably not very clear) message. Stay Safe & Happy, :* TankGirl
В списке pgsql-general по дате отправления: