Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: (Ovid) Re: How do you get Perl::DBI to do a desc table_name?

by kleinbiker7 (Sexton)
on Mar 27, 2002 at 18:32 UTC ( [id://154752]=note: print w/replies, xml ) Need Help??


in reply to (Ovid) Re: How do you get Perl::DBI to do a desc table_name?
in thread How do you get Perl::DBI to do a desc table_name?

This doesnt seem to work for me. I think select top only works for SQL Server, and I am using Oracle. Any other suggestions? Thanks! Robert
  • Comment on Re: (Ovid) Re: How do you get Perl::DBI to do a desc table_name?

Replies are listed 'Best First'.
(Ovid) Re(3): How do you get Perl::DBI to do a desc table_name?
by Ovid (Cardinal) on Mar 27, 2002 at 18:45 UTC

    Just drop the TOP 1 from the SQL. I added that to prevent the DB from selecting all records and doing to much work. However, having the $sth->finish call at the end should minimize the overhead by merely finishing up the statement handle without fetching the subsequent rows.

    Of course, Oracle should support some form of the TOP syntax, but I don't know Oracle.

    Cheers,
    Ovid

    Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

      Just execute a query with a false where clause:
      select * from ... where 1=0
      This will return an empty result set, but you'll still get all the column headers, names, etc.

      Michael

      OK. I think I see now. Another question: How do you get the types, like varchar2(2000), number(3), date, etc? Basically I want to get all the results from a DESC operation into my Perl script. Thanks!

      Robert

        I think this is soooo system dependent, and that it would be faster consulting your manual. Just as an example, in PostgreSQL you would need to either use "\d $tablename", or you would need to go into system tables such as pg_class, pg_attribute, and pg_type. I know how to do this in Postgres, but this certainly doesn't apply to any other databases.

        I'm sure there is a way, but I think you're asking in the wrong place. You should find your manual and look for this information, or ask an oracle users group...

      While I am not familiar with the TOP syntax, I bet ROWNUM can be used to do the same. ROWNUM is a the number of a row as it was retrieved from the table (this differs from the display order) -- to limit results to 10 rows, you can use WHERE ROWNUM <= 10. (Please note: this takes place before sorting, so it is no good for getting the "top 10" and such.)

      SELECT * FROM scott.emp WHERE ROWNUM = 1;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://154752]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (10)
As of 2024-04-23 08:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found