2

朋友们:

一直在尝试将参数化为 pl/python 中的查询 - 并且肯定在这里遗漏了一些简单的东西;我已经尝试将 % 和 $ 添加到变量名中,但没有成功。

(也无法将结果变量传递到 python 日志中 - 但这是一个差异问题!我确实设置了日志 - 可以向它发送文字字符串 - 但为了清楚起见,这里删掉了很多代码)

CREATE OR REPLACE FUNCTION footest0 (param_key integer) RETURNS text AS $$

# 1) SELECT from record based on parameter param_key:

rv = plpy.execute("SELECT name_key,address_key FROM file WHERE foreign_key = param_key)

name = rv[0]["name"]
address = rv[0]["address"]

# how to put results into the log?:
logging.info('  record: %(case)s')

$$ LANGUAGE plpythonu;
4

2 回答 2

3

使用$n符号:

st = "SELECT name_key,address_key FROM file WHERE foreign_key = $1"
pst = plpy.prepare(st, [ "integer" ])
rv = plpy.execute(pst, [ param_key ])
于 2011-06-17T04:04:53.293 回答
2

我不确定您到底要问什么,但是如果您尝试对用于控制查询连接的列进行参数化,则参数不会以这种方式工作。

如果你真的想这样做,你总是可以使用字符串格式来创建你的 SQL 查询,如下所示:

rv = plpy.execute("SELECT name_key, address_key FROM file WHERE %s = %s" %
                  (foreign_key, param_key))

如果您只是想与foreign_key字符串进行比较,Paulo 可以找到您想要的答案。

于 2011-06-17T03:47:20.790 回答