我有问题如何使用 plpgsql ( bytea
-> text
) 转换列。我编写了适用于某些数据库但不适用于其他数据库的函数。我不知道如何解决它。
使用 8.0 - 9.3 的数据库;此错误适用于 8.1.19。
我收到了:
ERROR: column "the_column" cannot be cast to type "text" CONTEXT: SQL statement "ALTER TABLE the_table ALTER COLUMN the_column TYPE text" PL/pgSQL function "byteatotext" line 11 at execute statement
我的功能:
CREATE OR REPLACE FUNCTION byteaToText()
RETURNS text AS
$BODY$
DECLARE
ver int;
BEGIN
SELECT into ver (select setting from pg_settings where name='server_version_num') as test;
IF ver < 80200 THEN
EXECUTE 'ALTER TABLE the_table ALTER COLUMN the_column TYPE text USING ENCODE(properties, \'escape\'))';
RETURN ver;
ELSE
EXECUTE 'ALTER TABLE the_table ALTER COLUMN the_column TYPE text';
RETURN ver;
END IF;
RETURN 'error';
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
select byteaToText();