DO
$$
DECLARE
	v_dose_inj_column_type varchar(100);
	v_dose_inj_column_length INT;
	v_current_db varchar(100);
BEGIN
	
	SELECT CURRENT_DATABASE() into v_current_db;
	RAISE NOTICE 'v_current_db: % | %', coalesce(v_current_db, 'null'), to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');

	SELECT
		data_type,
		character_maximum_length 
		INTO
		v_dose_inj_column_type,
		v_dose_inj_column_length
	FROM
		information_schema.columns
	WHERE
		table_catalog = v_current_db
		AND table_schema = 'ies'
		AND table_name = 't_schet_usl_onk_lek_pr'
		AND column_name = 'dose_inj'
	LIMIT 1;

	RAISE NOTICE 'v_dose_inj_column_type: % | %', coalesce(v_dose_inj_column_type, 'null'), to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');
	RAISE NOTICE 'v_dose_inj_column_length: % | %', coalesce(v_dose_inj_column_length::varchar(100), 'null'), to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');

	IF v_dose_inj_column_type IS NULL
	THEN
		RAISE NOTICE 'Поле IES.T_SCHET_USL_ONK_LEK_PR.DOSE_INJ НЕ найдено - создаём! %', to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');
		ALTER TABLE ies.t_schet_usl_onk_lek_pr ADD dose_inj varchar(20);	
	ELSE
		IF v_dose_inj_column_type != 'character varying'		
		THEN
			RAISE NOTICE 'Поле IES.T_SCHET_USL_ONK_LEK_PR.DOSE_INJ найдено, но имеет неподходящий тип - переименуем текущее и создадим новое! %', to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');
			ALTER TABLE ies.t_schet_usl_onk_lek_pr RENAME COLUMN dose_inj TO dose_inj_old;
			ALTER TABLE ies.t_schet_usl_onk_lek_pr ADD dose_inj varchar(20);
		ELSE
			IF v_dose_inj_column_length < 20
			THEN
				RAISE NOTICE 'Поле IES.T_SCHET_USL_ONK_LEK_PR.DOSE_INJ найдено и имеет подходящий тип но не длину - увеличим! %', to_char(clock_timestamp(), 'DD.MM.YYYY HH24:MI:SS');
				ALTER TABLE ies.t_schet_usl_onk_lek_pr ALTER COLUMN dose_inj TYPE varchar(20);
			END IF;
		END IF;
	END IF;	
END;
$$;