【发布时间】:2016-08-24 09:54:55
【问题描述】:
DECLARE
resources varchar[];
default_active development.switch_state;
defaultsp varchar[];
x varchar[];
columnname varchar;
looper integer;
BEGIN
-- setting resources
resources := array(SELECT column_name::text AS resource FROM information_schema.columns WHERE table_name='usr_defprivilegies');
resources := array_remove(resources, 'id_defprvg');
resources := array_remove(resources, 'id_category');
resources := array_remove(resources, 'id_level');
-- setting privilegies switch
SELECT ap.default_active AS switcher INTO default_active FROM development.usr_activeprivilegies AS ap
INNER JOIN development.usr_managelayer AS um ON ap.id_activeprvg = um.id_activeprvg WHERE um.id_user = $1;
IF default_active = '1' THEN
looper := 1;
FOREACH x SLICE 1 IN ARRAY resources
LOOP
columnname := resources[looper];
defaultsp := array(SELECT columnname FROM development.usr_defprivilegies AS dp WHERE dp.id_category = $4 AND dp.id_level = $3);
EXECUTE 'UPDATE development.usr_activeprivilegies SET default_active = ''0'', '
|| resources[looper]
|| ' = '
|| quote_literal(defaultsp[looper])
|| ' WHERE id_activeprvg = '
|| $2;
looper := looper + 1;
END LOOP;
END IF;
RETURN 1;
END;
我需要访问存储在数组中的列的值,但我找不到方法。那是代码工作正常,但是这一行:
quote_literal(defaultsp[looper])
返回如下内容:'column_name' 但我需要'column_value';
感谢您的回答。
【问题讨论】:
标签: arrays postgresql function postgresql-9.4