Re: Object description at Client Window - Mailing list pgsql-sql

From achill@matrix.gatewaynet.com
Subject Re: Object description at Client Window
Date
Msg-id Pine.LNX.4.44.0310171732340.5411-100000@matrix.gatewaynet.com
Whole thread Raw
In response to Re: Object description at Client Window  ("Kumar" <sgnerd@yahoo.com.sg>)
List pgsql-sql
On Fri, 17 Oct 2003, Kumar wrote:

> But I have get into another problem. While I execute the following command I
> could get the result as U can see below
> 
> etgsuite=# SELECT a.attname,format_type(a.atttypid, a.atttypmod),
> a.attnotnull, a.atthasd
> ef, a.attnum
> FROM pg_class c, pg_attribute a
> WHERE c.relname = 'companies'
> AND a.attnum > 0 AND a.attrelid = c.oid
> ORDER BY a.attnum;
>       attname       |         format_type         | attnotnull | atthasdef |
> attnum
> --------------------+-----------------------------+------------+-----------+
> --------
>  company_id         | bigint                      | t          | t         |
> 1
>  name               | character varying(100)      | f          | f         |
> 2
>  website            | character varying(50)       | f          | f         |
> 3
>  address1           | character varying(100)      | f          | f         |
> 4
>  address2           | character varying(100)      | f          | f         |
> 5
>  city               | character varying(50)       | f          | f         |
> 6
>  state              | character varying(50)       | t          | f         |
> 7
>  postal_code        | character varying(30)       | t          | f         |
> 8
>  country            | character varying(50)       | t          | f         |
> 9
>  account_manager_id | bigint                      | t          | f         |
> 10
>  primary_contact_id | bigint                      | t          | f         |
> 11
>  company_type_id    | bigint                      | t          | f         |
> 12
>  status_flag        | bigint                      | f          | f         |
> 13
>  lead_source        | bigint                      | f          | f         |
> 14
>  lead_date          | timestamp without time zone | f          | f         |
> 15
>  industry_type      | bigint                      | f          | f         |
> 16
>  rec_modifier_id    | bigint                      | t          | f         |
> 17
>  rec_created_date   | timestamp without time zone | t          | f         |
>    18
>  rec_modified_date  | timestamp without time zone | f          | f         |
> 19
>  rec_deleted_flag   | character(1)                | t          | f         |
> 20
> (20 rows)
> 
> So I tried to create a plpgsql function as follows to return these for all
> the table name. So I have created a function like this
> 
> CREATE OR REPLACE FUNCTION public.desc_table(varchar)
>   RETURNS refcursor AS
> 'DECLARE
> 
> ref                         REFCURSOR ;
> p_tablename                 ALIAS FOR $1;
> 
> BEGIN
> OPEN ref FOR
>  SELECT a.attname,
>   format_type(a.atttypid, a.atttypmod),
>   a.attnotnull,
>   a.atthasdef,
>   a.attnum
>  FROM pg_class c, pg_attribute a
>  WHERE c.relname = p_tablename
>  AND a.attnum > 0
>  AND a.attrelid = c.oid
>  ORDER BY a.attnum;
> 
> RETURN ref;
> END;'
>   LANGUAGE 'plpgsql' VOLATILE;
> 
> 
> While trying to execute this
> select desc_table('companies');
> 
> I got the following error.
> WARNING:  Error occurred while executing PL/pgSQL function desc_table
> WARNING:  line 7 at open
> 
> ERROR:  Unable to identify an operator '=' for types 'name' and 'character
> varying'
>  You will have to retype this query using an explicit cast

replace 
WHERE c.relname = p_tablename
with
WHERE c.relname::varchar = p_tablename

> 
> I have write many functions of the same structure and executed with out
> problems. Where I am doing wrong here.
> 
> Please shed some light.
> 
> Regards
> Kumar
> 
> ----- Original Message ----- 
> From: "Richard Huxton" <dev@archonet.com>
> To: "Kumar" <sgnerd@yahoo.com.sg>; "Jordan S. Jones" <list@racistnames.com>
> Cc: <pgsql-sql@postgresql.org>
> Sent: Friday, October 17, 2003 2:54 PM
> Subject: Re: [SQL] Object description at Client Window
> 
> 
> > On Friday 17 October 2003 09:44, Kumar wrote:
> > > Hi ,
> > >
> > > Jordan, thanks for ur reply. But I am not asking that.
> > >
> > > I want to get all the column names of any table at the PgAdmin3 SQL
> Window.
> > > To make it more clear, actually i wanted to send the table name as the
> > > input parameter for a function and expecting the column names, data
> types,
> > > etc as the output.
> > >
> > > Is there any command or any system table from that I could query the
> column
> > > names of a table (other than \d table name at the command prompt).
> >
> > Try what the man said. Start psql with -E and issue \d mytable and it will
> > show you the SQL it uses to produce the table's details.
> >
> > -- 
> >   Richard Huxton
> >   Archonet Ltd
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faqs/FAQ.html
> 

-- 
-Achilleus



pgsql-sql by date:

Previous
From: Ewald Geschwinde
Date:
Subject: Re: [postgres] IPv6-Datentyp(en) in PostgreSQL?
Next
From: "George Weaver"
Date:
Subject: Re: Object description at Client Window