有人可以向我解释我做错了什么吗?
services.AddScoped<ValidateRoleClient>();
services.AddScoped<RolesFilterAttribute>();
调用:
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');
答案 0 :(得分:0)
$1
是第一个函数参数,因此$1
,string_to_match
和a_length
指向类型为character varying[]
的同一对象。
所以任务
$1 := array_length(string_to_match,1);
尝试将5
分配给数组变量,这会导致您观察到错误。
您似乎对$1
的角色感到困惑。省略ALIAS FOR $1
部分,并使用a_length
代替$1
。