Обсуждение: 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);
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
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;
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 >