Ошибка: оператор не существует: dom_id = символ меняется на символе 65 В Postgres SQL - PullRequest
0 голосов
/ 21 июня 2010

Я пытаюсь выполнить одну хранимую процедуру следующим образом.

CREATE OR REPLACE FUNCTION "public"."get_fees" (VARCHAR(5000)) RETURNS text[] AS 
$body$
DECLARE
student_ids ALIAS FOR $1;
studetFee text[];
BEGIN
FOR studetFee IN
  SELECT * FROM Student_fee WHERE student_id IN ( student_ids::VARCHAR(5000) )
LOOP
   **** some *** 
END LOOP;
END;
$body$

Это показывает мне следующую ошибку, когда я пытаюсь этот запрос

SELECT * FROM get_fees( '1,2,3,4,5'::VARCHAR(5000) ); 

ERROR:  operator does not exist: dom_id = character varying at character 65
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

В чем может быть проблема.

Спасибо Рахул

Ответы [ 3 ]

2 голосов
/ 21 июня 2010

Попробуйте:

...WHERE student_id = any(( string_to_array(student_ids,',') )

https://www.postgresql.org/docs/current/static/functions-array.html

0 голосов
/ 05 октября 2010

studetFee должен быть тип записи

0 голосов
/ 21 июня 2010

Вы не можете сделать "где student_id in (varchar)". Вы должны проанализировать строку в списке.

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