postgresql 函数文本参数拆分
postgresql function text parameter splitting up
我创建了以下 postgres 函数
CREATE OR REPLACE FUNCTION public.fn(param TEXT)
RETURNS void
LANGUAGE plpgsql
AS
$$
DECLARE param TEXT;
BEGIN
DELETE FROM public."table_name"
WHERE "column_name" = param;
END
$$
我尝试将字符串作为参数传递:
293507407
<class 'str'>
但我总是运行进入以下错误:
psycopg2.errors.UndefinedFunction: function fn(unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown) does not exist
LINE 1: SELECT * FROM fn('2','9','3','5','0','7','4','0'...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
'''
我已经在我的 python 代码和函数本身中尝试了所有可能的转换。然而,没有任何运气。
我做错了什么?
param TEXT
不需要在 DECLARE
部分重复,因为它已经定义为参数
cursor.callproc(fn, param)
应该是 cursor.callproc(fn, [param])
。你现在拥有它的方式 '293507407' 正在采用一系列字符,例如fn('2','9','3','5','0','7','4','0'...
有关使用信息,请参阅 callproc。
远离使用 callproc
,在 psycopg3 中它将不存在。只需使用 execute
到 运行 的功能。这也适用于 Postgres 过程,尽管名称如此,但不能在 callproc
.
中使用
我创建了以下 postgres 函数
CREATE OR REPLACE FUNCTION public.fn(param TEXT)
RETURNS void
LANGUAGE plpgsql
AS
$$
DECLARE param TEXT;
BEGIN
DELETE FROM public."table_name"
WHERE "column_name" = param;
END
$$
我尝试将字符串作为参数传递:
293507407
<class 'str'>
但我总是运行进入以下错误:
psycopg2.errors.UndefinedFunction: function fn(unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown) does not exist
LINE 1: SELECT * FROM fn('2','9','3','5','0','7','4','0'...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
'''
我已经在我的 python 代码和函数本身中尝试了所有可能的转换。然而,没有任何运气。
我做错了什么?
param TEXT
不需要在DECLARE
部分重复,因为它已经定义为参数cursor.callproc(fn, param)
应该是cursor.callproc(fn, [param])
。你现在拥有它的方式 '293507407' 正在采用一系列字符,例如fn('2','9','3','5','0','7','4','0'...
有关使用信息,请参阅 callproc。远离使用
中使用callproc
,在 psycopg3 中它将不存在。只需使用execute
到 运行 的功能。这也适用于 Postgres 过程,尽管名称如此,但不能在callproc
.