Почему синтаксическая ошибка при использовании функций case и array в postgreSQL? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в базе данных postgreSQL. Можете ли вы объяснить, почему у меня ошибка синтаксиса?Я не могу найти какой-либо ответ в документации(string_to_match, 1) INTO ... ^ Состояние SQL: 42601 Символ: 258

Ответы [ 3 ]

0 голосов
/ 18 октября 2018
  • CASE WHEN THEN END не является выражением, а выражением.
  • Поэтому эти точки с запятой не нужны внутри ...
  • А также RAISE нельзя использовать внутри.
  • Что означает выражение INTO переменная означает?
0 голосов
/ 18 октября 2018

Наверное, что-то вроде этого вы хотите (?):

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;
0 голосов
/ 18 октября 2018

это просто первая интуиция, но я думаю, что это из-за пробела между array_length и (string_to_match, 1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...