Я пытаюсь создать SQL-процедуру spAppeUpdatetTimes (), используя SQL, который принимает на входе строковый аргумент элемента UPC. Но не работает корректно. На выходе оказывается, что процедура принимает на входе не сплошную строку, а несколько аргументов. Это связано с тем, что значение UPC элемента разделяется (делится) на отдельные символы. Что мне делать, чтобы избежать этой ошибки?
CREATE OR REPLACE FUNCTION external.spAppeUpdatetTimes(
upc character varying)
RETURNS void
LANGUAGE 'sql'
COST 100
VOLATILE
AS $BODY$
update external."tbProducts" as pu
set "eBayDiscontinued"= current_timestamp
from external."tbProducts" as ps
where pu."eBayUPC"=upc;
end;
$BODY$;
ALTER FUNCTION external.spappeupdatettimes(character varying)
OWNER TO postgreadmin;
Вызов процедуры на Python:
cursor.callproc('external."spAppeUpdatetTimes"', (record[2]))
Таблица, содержащая данные:
CREATE TABLE external."tbProducts"
("UPC" character varying(255) COLLATE pg_catalog."default",
CONSTRAINT "tbProducts_pkey" PRIMARY KEY ("CWRPartNumber"))
Однако когда я пытаюсь использовать эту функцию, я получаю следующую ошибку:
ProgrammingError('function external.spAppeUpdatetTimes(unknown,
unknown, unknown, unknown, unknown, unknown) does not exist\nLINE 1:
SELECT * FROM external."spAppeUpdatetTimes"
(\'1\',\'9\',\'3\',\'0\',...\n ^\nHINT: No
function matches the given name and argument types. You might need
to add explicit type casts.
Пожалуйста, ответьте на свой вопрос правильным примером.
cursor.callproc('external."spAppeUpdatetTimes"', (record[2], ))У вас должна быть кнопка с названием что-то вроде «Ответить на свой вопрос».






Попробуйте явно присоединить данные.
Что-то типа
cursor.callproc('external."spAppeUpdatetTimes"', ''.join((record[2])))
Задайте тип данных текста в функции, но ничего не изменится.
Проблема решена. При вызове процедуры в коде Python аргументы callproc должны быть кортежем или списком. mysqltutorial.org/calling-mysql-stored-procedures-python.
cursor.callproc('external."spAppeUpdatetTimes"', (record[2], ))
Проблема решена. При вызове процедуры в коде Python аргументы callproc должны быть кортежем или списком. mysqltutorial.org/calling-mysql-stored-procedures-python