home *** CD-ROM | disk | FTP | other *** search
- #! /usr/bin/perl -w
-
- # $Id: query.pl,v 1.4 2001/03/31 18:28:34 rvsutherland Exp $
-
- use strict;
-
- use DBI;
- use DDL::Oracle;
-
- my $aref;
- my $sql;
- my $sth;
- my $stmt;
-
- my $dbh = DBI->connect(
- "dbi:Oracle:",
- "",
- "",
- {
- PrintError => 0,
- RaiseError => 1
- }
- );
-
- DDL::Oracle->configure(
- dbh => $dbh,
- # resize => 0,
- # view => 'user',
- );
-
- print STDERR "Enter Action [CREATE]: ";
- chomp( my $action = <STDIN> );
- $action = "create" unless $action;
-
- print STDERR "Enter Type [TABLE]: ";
- chomp( my $type = <STDIN> );
- $type = "TABLE" unless $type;
-
- print STDERR "Enter Name of File : ";
- chomp( my $file = <STDIN> );
-
- die "\nYou must specify a File.\n" unless $file;
- die "\nFile $file does not exist.\n" unless -e $file;
- die "\nFile $file is not readable.\n" unless -r $file;
-
- open FILE, "< $file" or die "\nCan't open $file: $!\n";
-
- print STDERR "\n";
-
- my @lines = <FILE>;
-
- # Create statement, eliminating lines containing only a slash
- # and eliminating any semi-colons
- $stmt = ( join "", grep !/^\/$/, @lines );
- $stmt =~ s/\;//g;
- $sth = $dbh->prepare( $stmt );
- $sth->execute;
- $aref = $sth->fetchall_arrayref;
-
- my $obj = DDL::Oracle->new(
- type => $type,
- list => $aref,
- );
-
- if ( $action eq "drop" ){
- $sql = $obj->drop;
- }
- elsif ( $action eq "create" ){
- $sql = $obj->create;
- }
- elsif ( $action eq "resize" ){
- $sql = $obj->resize;
- }
- elsif ( $action eq "compile" ){
- $sql = $obj->compile;
- }
- elsif ( $action eq "show_space" ){
- $sql = $obj->show_space;
- }
- else{
- die "\nDon't know how to '$action'.\n";
- } ;
-
- print $sql;
-
- # $Log: query.pl,v $
- # Revision 1.4 2001/03/31 18:28:34 rvsutherland
- # Facilitated new method 'show_space'.
- #
- # Revision 1.3 2001/01/27 16:21:44 rvsutherland
- # Added NAME section to pod.
- #
- # Revision 1.2 2001/01/14 16:47:55 rvsutherland
- # Nominal changes for version 0.32
- #
- # Revision 1.1 2001/01/07 16:42:45 rvsutherland
- # Initial Revision
- #
-
- =head1 NAME
-
- query.pl - Generates DDL for a specified list of objects.
-
- =head1 DESCRIPTION
-
- Uses DDL::Oracle to generate the DDL for a query provided in a file.
- The query should select owner, name for a list of objects of the same
- type (e.g., TABLE, INDEX, TABLESPACE, etc.). The FROM and WHERE clauses
- may be anything of the user's choice.
-
- For example, the file might contain:
-
- SELECT
- owner
- , table_name
- FROM
- dba_tables
- WHERE
- tablespace_name = 'MY_TBLSP' -- your mileage may vary
-
- The file may contain SQL*Plus's traditional '/', and/or may contain a ';'
-
- =head1 AUTHOR
-
- Richard V. Sutherland
- rvsutherland@yahoo.com
-
- =head1 COPYRIGHT
-
- Copyright (c) 2000, 2001 Richard V. Sutherland. All rights reserved.
- This module is free software. It may be used, redistributed, and/or
- modified under the same terms as Perl itself. See:
-
- http://www.perl.com/perl/misc/Artistic.html
-
- =cut
-
-