Кто-нибудь может мне объяснить, что я делаю не так?
CREATE OR REPLACE FUNCTION validation(
string_to_match varchar[],
pattern varchar,
validation_type varchar
) RETURNS boolean AS $$
DECLARE a_length ALIAS FOR $1;
DECLARE result_validation ALIAS FOR $2;
BEGIN
IF validation_type = 'login' THEN
$1 := array_length(string_to_match,1);
RAISE NOTICE 'Login if , Array length is %', $1;
ELSIF validation_type = 'register' THEN
$1 := array_length(string_to_match,1);
RAISE NOTICE 'Array length is %', $1;
ELSIF validation_type = 'contact' THEN
$1 := array_length(string_to_match,1);
RAISE NOTICE 'Array length is %', $1;
END IF;
RETURN $1;
END;
$$ lANGUAGE plpgsql;
Вызов:
SELECT validation (
'{1,2,3,4,5}',
'([a-zA-Z]{2,20}[\.\-\_])([a-zA-Z]{2,20}[0-9]{2,20})@([a-z]{2,6})\.([a-z]{2,3})',
'login');
Ошибка:
ERROR: malformed array literal: "5"
DETAIL: Array value must start with "{" or dimension information.
CONTEXT: PL/pgSQL function validation(character varying[],character varying,character varying) line 7 at assignment
SQL state: 22P02