Вашето въвеждане е неуспешно със синтактична грешка в Конструктор ARRAY преди дори да стигнете до разрешение на тип функция - където ще получите повече съобщения за грешка поради други несъответствия на типове, след като премахнете конструктора ARRAY, който изобщо не трябва да присъства в извикването.
Вашето решение е да подадете отделни параметри от съвпадащ тип ,не масив. Останалото е просто обяснение на това, което видяхме.
Какво наистина се случи
Един масив може да включва само стойности от един и същи тип, но вашите въведени смеси числови константи с нечислов низов литерал , което не може да бъде разрешено.
Ако искате да се разреши на text[]
(масив от text
), трябва да предоставите низови литерали по следния начин:
SELECT ARRAY['1004', '2', '1079412', 'WwLEA6XZ0'];
Или директно литерал на масив, така:
SELECT '{1004, 2, 1079412, WwLEA6XZ0}'::text[];
Но след като стартирате конструктор ARRAY с числови константи, само числови типове са законни за добавяне. Или поне низови литерали със съдържание, което може да бъде приведено към същия тип. Вие можете :
SELECT ARRAY[1004, 2, 1079412, '1'];
... което води до int[]
. Или:
SELECT ARRAY[1004, 2, 1079412, 1.0];
Или дори:
SELECT ARRAY[1004, 2, 1079412.0, '1.0'];
... и двете водят до numeric[]
.
Но е незаконно и с право.ARRAY[1004, 2, 1079412, 'WwLEA6XZ0V']
Точните правила за разрешаване на типове за конструктори на масиви могат да бъдат намерени в тази глава на ръководството:"Преобразуване на типове" - "UNION, CASE и свързани конструкции" . Вашето пътуване приключва на:
Тъй като низовият литерал 'WwLEA6XZ0V' не може да се преобразува в integer
.