gpt4 book ai didi

postgresql - 为什么在 postgreSQL 中使用 case 和数组函数会出现语法错误?

转载 作者:行者123 更新时间:2023-11-29 14:30:19 25 4
gpt4 key购买 nike

我是 postgreSQL 数据库的新手,你能解释一下为什么我会出现语法错误吗?我在文档中找不到任何答案 docs

  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

CASE validation_type
WHEN 'login' THEN array_length (string_to_match , 1) INTO $1 RAISE NOTICE
'Array length is %', $1;
WHEN 'register' THEN array_length(string_to_match,1) INTO $1 RAISE NOTICE
'Array length is %', $1;
WHEN 'contact' THEN array_length(string_to_match,1) INTO $1 RAISE NOTICE
'Array length is %', $1;
END CASE;

END;
$$ lANGUAGE plpgsql;

ERROR: syntax error at or near "array_length" LINE 7: WHEN 'login' THEN array_length (string_to_match , 1) INTO... ^ SQL state: 42601 Character: 258

最佳答案

可能你想要这样的东西(?):

CREATE OR REPLACE FUNCTION validation(string_to_match varchar [], pattern 
varchar , validation_type varchar)
RETURNS boolean
AS $$
DECLARE a_length INT;
BEGIN

IF validation_type = 'login' THEN
a_length := array_length(string_to_match , 1);
RAISE NOTICE 'Array length is %', a_length;
ELSIF validation_type = 'register' THEN
a_length := array_length(string_to_match , 1);
RAISE NOTICE 'Array length is %', a_length;
ELSIF validation_type = 'contact' THEN
a_length := array_length(string_to_match , 1);
RAISE NOTICE 'Array length is %', a_length;
END IF;

RETURN true; -- or false ?
END;
$$ lANGUAGE plpgsql;

关于postgresql - 为什么在 postgreSQL 中使用 case 和数组函数会出现语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52871361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com