the*_*n29 1 sql postgresql dblink
我正在尝试编写一个函数,使用 dblink 将查询发送到外部数据库,但我需要在文本列上放置一个条件,但它不起作用。看起来像这样;
CREATE OR REPLACE FUNCTION dblink_test(param VARCHAR(32))
RETURNS TABLE (...) AS $$
BEGIN
PERFORM dblink_connect('myconn', ...);
RETURN QUERY SELECT * FROM dblink('myconn',
format('SELECT * FROM someTable where name= %s', param));
END
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
但它返回一个类似的错误column "param" does not exist
,这真的很烦人。我该怎么做?
format 函数将为您提供'abc'
如下输入:
SELECT * FROM someTable where name= abc
但是您想要检查字符串文字,因此您需要引用该字符串(就像 SQL 中通常的那样)。我建议使用quote_literal()
(以避免 SQL 注入):
CREATE OR REPLACE FUNCTION dblink_test(param VARCHAR(32))
RETURNS TABLE (...) AS $$
BEGIN
PERFORM dblink_connect('myconn', ...);
RETURN QUERY SELECT * FROM dblink('myconn',
format('SELECT * FROM someTable where name = %s', quote_literal(param)));
END
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3075 次 |
最近记录: |