没有的功能,我可以这样做:PLPGSQL:将参数传递给函数的休息,我的引号
DELETE FROM table1
WHERE something='hello'
我与事物的值的行=“你好”被删除,但一旦我实现的功能,我开始有引号问题。
CREATE OR REPLACE FUNCTION somefunc(varchar)
RETURNS varchar AS $$
BEGIN
DELETE FROM table1
WHERE something='$1';
DELETE FROM table2
WHERE something='$1';
RETURN $1;
END;
$$ LANGUAGE plpgsql;`
似乎没什么可行的。我试过了(我在SO或别处看到过的所有变化):
something=$1 <-- says column "hello" doesn't exist (because no quotes are given)
something=''$1''
something='''$1'''
something=''''$1''''
something='''||$1||'''
something=$Q$$1$Q1$ <--- gives syntax error
something=$Q1$ $1 $Q1$
something=$$ $1 $$
something=quote_literal($1)
还有很多其他的变化。我如何解决这个问题?
顺便说一句,我正在使用python脚本来运行该功能。这是运行它的线。我也尝试在这行中加入引号以及无效:
cur.execute("SELECT somefunc(%s);" % (sys.argv[2]))
谢谢!
使用'DELETE FROM表1 WHERE东西= $ 1;'和'SELECT somefunc( '你好')'为我工作。所以我想它应该与你如何从python调用函数有关(我不知道Python,所以我不知道它可能是什么) –