Postgresql plpgsql:如何在sql语句中引用变量

Postgresql plpgsql:如何在sql语句中引用变量,postgresql,plpgsql,Postgresql,Plpgsql,我对PL/pgSQL相当陌生,不知道如何在SELECT语句中引用变量 在以下函数中,SELECT INTO始终返回NULL: raisenotice允许我验证我的游标是否工作正常:名称被正确检索,但由于某种原因我仍然不知道,没有正确地传递给selectinto语句 出于调试目的,我尝试用一个常量值替换SELECT INTO中的变量,结果成功了: SELECT count( bill_id) INTO nb_bills from t_bills where name = 'joe'; 我不知道如

我对PL/pgSQL相当陌生,不知道如何在SELECT语句中引用变量

在以下函数中,SELECT INTO始终返回NULL:

raisenotice允许我验证我的游标是否工作正常:名称被正确检索,但由于某种原因我仍然不知道,没有正确地传递给selectinto语句

出于调试目的,我尝试用一个常量值替换SELECT INTO中的变量,结果成功了:

SELECT count( bill_id) INTO nb_bills from t_bills where name = 'joe';
我不知道如何在SELECT INTO语句中引用r.name。 我尝试了r.name,我尝试了创建另一个包含引号的变量,它总是返回NULL。 我被卡住了。如果有人知道

SELECTINTO始终返回NULL

未正确传递到SELECT INTO语句

它总是返回NULL

所有这些都没有意义

SELECT语句本身在PL/pgSQL中不返回任何内容。您必须将结果分配给变量,或者使用一个可用的返回变量显式返回结果

SELECT INTO仅用于变量赋值,也不返回任何内容。不要与普通SQL中的SELECT INTO混淆-通常不鼓励:

在您的示例中,不清楚应该返回什么。您没有透露函数的返回类型,实际上也没有返回任何内容

从阅读手册中的章节开始。 以下是一些相关答案和示例:

并且可能会与参数名发生命名冲突。除非你发布完整的函数定义,否则我们无法判断

更好的方法 也就是说,只有在极少数情况下才真正需要显式游标。通常,FOR循环的隐式光标更易于处理且更便宜:


大多数时候,你甚至不需要任何游标或循环。基于集合的解决方案通常更简单、更快。

参考r.name是正确的。在SQL客户机中运行select p.name、countb.bill\U id from t\U PEOPLES p join t\U bills b on t.name=b.name group by name时,它返回什么?在哪里以及如何检查nb\U bills值?尽可能显示整个代码。显示输入和输出参数、返回类型、语言声明等的标题是函数的重要部分。记住,一定要把它和你的博士后版本都包括在内。嗨,谢谢你的回复。我的意思是:-r.name包含'joe'选择countbill\u id到nb\u bills from t\u bills,其中name=r.name;提交通知“nb_法案:%”,nb_法案;-显示NULL,但从t_bills中选择countbill_id进入nb_bills,其中name='joe';提交通知“nb_法案:%”,nb_法案;-图5有没有办法查看提交的SQL查询?我试图激活日志功能,但它似乎没有显示这种SQL语句。只记录对过程的调用。
SELECT count( bill_id) INTO nb_bills from t_bills where name = 'joe';