Hey,

I am running PostgreSQL 8.1.4 and I want to create a user from inside a
function. Is this possible in 8.1?

Ive found quite a few references on google using EXECUTE, but this seems
relevant to earlier versions, not 8.1.

I have a function like this:

CREATE FUNCTION user_create (un varchar, uid bigint, pw varchar) RETURNS
VARCHAR LANGUAGE plpgsql AS '
  BEGIN
    EXECUTE "CREATE USER " || un || " WITH PASSWORD " || pw;

    RETURN un;
  END
';

Executing this function yields:

# SELECT user_create('bob',1234,'bobspassword');
ERROR:  column "CREATE USER " does not exist
CONTEXT:  SQL statement "SELECT  "CREATE USER " ||  $1  || " WITH PASSWORD
" ||  $2 "
PL/pgSQL function "user_create" line 2 at execute statement

Directly executing CREATE USER in this function also fails.. CREATE USER
$1 appears to be what is being executed.

Any tips would be appreciated.

Cheers,

Dan

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to