在postgres sql块中使用变量

时间:2015-04-28 14:02:17

标签: postgresql variables plpgsql

您是否有一个接受输入变量的SQL块,在连接中使用该变量并返回结果集。

踢球者是我被要求在函数外部执行此操作 - 即在SQL块中。

因此,例如,我想将值1234567890传递给变量v_hold

DO $$
declare
   v_hold integer;
BEGIN

 select * from t_table_A where ID = v_hold ; 
--return alert_mesg;
END$$;
--$$ LANGUAGE plpgsql

我已经完成的测试表明,为了返回结果集,您必须在RETURN TABLE声明中对其进行定义。我试图在功能之外定义这个,但我还没想到它。

这可以在函数外部完成 - 即传递变量并根据引用where子句中的变量的select语句返回结果集吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用预先准备好的声明。例如:

    PREPARE myStatement (int) AS SELECT * FROM t_table_A where ID = $1;

然后运行语句使用execute命令:

    EXECUTE myStatement(1234567890);

答案 1 :(得分:0)

来自documentation

  

DO执行匿名代码块,或者换句话说,使用过程语言执行临时匿名函数。

     

代码块被视为没有参数的函数体,返回void。它被解析并执行一次。

您可以使用shell脚本生成代码块,并获得您正在寻找的那种效果。