我在PostgreSQL中有以下功能:
create function test_createuser(username varchar, userpassword varchar) returns void as $$
begin
CREATE USER username WITH PASSWORD userpassword;
end;
$$ language plpgsql;
但是,这会产生以下错误:
syntax error at or near "userpassword"
如果我将一个文字字符串作为密码,例如'mypassword',则编译该函数。
有没有办法调用create user并从变量中传递密码?
您将不得不使用动态SQL:
EXECUTE format('CREATE USER %I PASSWORD %L', username, userpassword);