【发布时间】:2018-10-18 11:04:08
【问题描述】:
谁能向我解释我做错了什么?
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
【问题讨论】:
-
再一次:与其向您抛出一些无效代码,不如解释该函数应该做什么。目前
IF完全没用,因为无论哪种情况为真,您总是在做同样的事情。你为什么不使用正确的代码from the answer you accepted?
标签: postgresql plpgsql