Thread: uinique identifier

uinique identifier

From
"||//::..-cwhisperer-..:://||"
Date:
hi,

I want to create an unique identifier for all the tables in my db.

as paramater I pass the length of the identifier and the table name:

here my function

DROP FUNCTION ui_alz_table (int4,varchar);

CREATE FUNCTION ui_alz_table (int4,varchar) RETURNS varchar AS '

DECLARE
iLoop int4;
result varchar;
nr int4;
query_string varchar;
       BEGIN        result := '''';       nr := 1;              IF ($1>0) AND ($1 < 255) THEN           WHILE nr > 0
LOOP             FOR iLoop in 1 .. $1 LOOP                result := result || chr(int4(random()*25)+65);
ENDLOOP;              query_string := ''Select * from ''|| $2 || '' where id = '' || result;              EXECUTE
query_string;             IF NOT FOUND THEN                nr := 0;              END IF;           END LOOP;
RETURNresult;       END IF;       END;  
 
' LANGUAGE 'plpgsql';

in the for loop I create the unique identifier and  whith the
query_string I check whetherit exists or not.

but I get an error 'Attribute xxxx not found' and I don't know what to to with it.

thx for your help
 

-- 
Best regards,||//::..-cwhisperer-..:://||                          mailto:cwhisperer@vo.lu



Re: uinique identifier

From
Stephan Szabo
Date:
On Sun, 26 May 2002, ||//::..-cwhisperer-..:://|| wrote:

> hi,
>
> I want to create an unique identifier for all the tables in my db.
>
> as paramater I pass the length of the identifier and the table name:
>
> here my function
>
> DROP FUNCTION ui_alz_table (int4,varchar);
>
> CREATE FUNCTION ui_alz_table (int4,varchar) RETURNS varchar AS '
>
> DECLARE
> iLoop int4;
> result varchar;
> nr int4;
> query_string varchar;
>
>         BEGIN
>         result := '''';
>         nr := 1;
>
>         IF ($1>0) AND ($1 < 255) THEN
>             WHILE nr > 0 LOOP
>                FOR iLoop in 1 .. $1 LOOP
>                  result := result || chr(int4(random()*25)+65);
>                END LOOP;
>                query_string := ''Select * from ''|| $2 || '' where id = '' || result;

I think you probably want to use quote_ident on $2 and you'll
want to single quote result since otherwise you'll get a query string
like: select * from foo where id=FADFDFAD;



Re: uinique identifier

From
"Christopher Kings-Lynne"
Date:
What's wrong with using the OID column of pg_class or the OID column of your
table?

Chris

----- Original Message -----
From: "||//::..-cwhisperer-..:://||" <cwhisperer@vo.lu>
To: <pgsql-sql@postgresql.org>
Sent: Sunday, May 26, 2002 3:53 AM
Subject: [SQL] uinique identifier


> hi,
>
> I want to create an unique identifier for all the tables in my db.
>
> as paramater I pass the length of the identifier and the table name:
>
> here my function
>
> DROP FUNCTION ui_alz_table (int4,varchar);
>
> CREATE FUNCTION ui_alz_table (int4,varchar) RETURNS varchar AS '
>
> DECLARE
> iLoop int4;
> result varchar;
> nr int4;
> query_string varchar;
>
>         BEGIN
>         result := '''';
>         nr := 1;
>
>         IF ($1>0) AND ($1 < 255) THEN
>             WHILE nr > 0 LOOP
>                FOR iLoop in 1 .. $1 LOOP
>                  result := result || chr(int4(random()*25)+65);
>                END LOOP;
>                query_string := ''Select * from ''|| $2 || '' where id = ''
|| result;
>                EXECUTE query_string;
>                IF NOT FOUND THEN
>                  nr := 0;
>                END IF;
>             END LOOP;
>             RETURN result;
>         END IF;
>         END;
> ' LANGUAGE 'plpgsql';
>
> in the for loop I create the unique identifier and  whith the
> query_string I check whetherit exists or not.
>
> but I get an error 'Attribute xxxx not found' and I don't know what to to
with it.
>
> thx for your help
>
>
>
> --
> Best regards,
>  ||//::..-cwhisperer-..:://||
mailto:cwhisperer@vo.lu
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>