gpt4 book ai didi

未正确传递 PostgreSQL 函数参数

转载 作者:行者123 更新时间:2023-11-29 12:43:00 25 4
gpt4 key购买 nike

我有一个函数接受一个参数,该参数将被传递给 RETURN QUERY 并且数据是从底层 View 输入的。现在我在执行函数时得到零行,但是当我自己运行 select 语句时,我得到了结果。
所以我的一部分认为函数参数根本没有被读取。感谢您提供任何帮助/建议。

create or replace function my_trans(IN inid character)
RETURNS TABLE(
a_date timestamp without time zone,
pnt_sys character,
nval numeric,
pnt_type character,
gpid integer)
as $$
#variable_conflict use_column
BEGIN
RETURN QUERY
SELECT
BORN_DATE,
MY_SYSTEM,
MY_VALUE,
MY_TYPE,
MY_PAY_ID
FROM vw_psr where nid ~* '$1';
end;
$$ language plpgsql

最佳答案

你的函数有两个问题:

  1. 不要使用 character - 使用 textvarchar 代替
  2. 不要将参数名称放在单引号中

与您的问题无关,但是一个简单的“SELECT 函数”最好写成一个普通的 SQL 函数:

create or replace function my_trans(p_inid text)
RETURNS TABLE(
a_date timestamp without time zone,
pnt_sys character,
nval numeric,
pnt_type character,
gpid integer)
as $$
SELECT BORN_DATE,
MY_SYSTEM,
MY_VALUE,
MY_TYPE,
MY_PAY_ID
FROM vw_psr
where nid ~* p_inid;
$$ language sql;

为参数和局部变量使用某种前缀以避免它们与列名之间的名称冲突也是一个很好的编码约定。

关于未正确传递 PostgreSQL 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39721165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com