README.md
Sybase-Metadata version 0.01
============================

The README is used to introduce the module and provide instructions on
how to install the module, any machine dependencies it may have (for
example C compilers and installed libraries) and any other information
that should be provided before the module is installed.

A README file is required for CPAN modules since CPAN extracts the
README file from a module distribution so that people browsing the
archive can use it get an idea of the modules uses. It is usually a
good idea to provide version information here so that people can
decide whether fixes for the module are worth downloading.

INSTALLATION

To install this module type the following:

perl Makefile.PL
make
make test
make install

DEPENDENCIES

This module requires these other modules and libraries:

DBI
DBD:Sybase

Examples -


NB: You MUST have DBI and DBD:Sybase insatlled to use this module!

####################################################################
#
# new
# + Construct object and return handle
#
# + Input: None
#
# + Output: Object handle/pointer
#
####################################################################
Example:

my $mdHandle = Sybase::Metadata->new();

####################################################################
#
# Initialize
# + Initialize desired db connection and return global handle
# NB: You MUST have DBI and DBD:Sybase insatlled to use this module!
#
# + Input: Pointer to hash of DB properties containing:
# - Server
# - User
# - Password
# - Database
#
# + Output: None but initializes db handle to be used internally
#
####################################################################
Example:

my %dbHash = ( SERVER => 'BIGDB_SERVER',
USER => 'SOME_USER',
PASSWORD => 'changeme',
DATABASE => 'BIGDB_DEV');

my $hashPtr = \%dbHash;

my $mdHandle = Sybase::Metadata->new();

$mdHandle->Initialize($hashPtr);


####################################################################
#
# GetDatabases
# + Get a list of all databases and their space usage info
# + Input : None
# + Output : Ref to array of hashes containing:
# DBName
# DBID
# Owner
# CreateDate
#
#
####################################################################
Example:

print "Testing GetDatabases ... \n";

my $dbListRef = $mdHandle->GetDatabases();

foreach ( @{$dbListRef}) {
print "DBName = $_->{DBName}, DBID = $_->{DBID}, Owner = $_->{Owner}, CreateDate = $_->{CreateDate} \n";
}


####################################################################
#
# GetTables
# + Get a list of tables in present database, Useful for drill
# down to table details
# + Input : None
# + Output : Ref to array of hashes containing:
# Name (name of table)
# TableOID
# Owner
# CreateDate
#
#
####################################################################
Example:

print "\n Testing GetTables ... \n";

my $dbListRef = $mdHandle->GetTables();

foreach ( @{$dbListRef}) {
print "Name = $_->{Name}, TableOID = $_->{TableOID}, Owner = $_->{Owner}, CreateDate = $_->{CreateDate} \n";
}


####################################################################
#
# GetProcs
# + Get a list of tables in present database, Useful for drill
# down to table details
# + Input : None
# + Output : Ref to array of hashes containing:
# Name (name of proc)
# ProcOID
# Owner
# CreateDate
#
####################################################################
Example:

print "\n Testing GetProcs ... \n";

my $dbListRef = $mdHandle->GetProcs();

foreach ( @{$dbListRef}) {
print "Name = $_->{Name}, ProcOID = $_->{ProcOID}, Owner = $_->{Owner}, CreateDate = $_->{CreateDate} \n";
}


####################################################################
#
# GetViews
# + Get a list of views in present database, Useful for drill
# down to view details
# + Input : None
# + Output : Ref to array of hashes containing:
# Name (name of view)
# ViewOID
# Owner
# CreateDate
#
####################################################################
Example:

print "\n Testing GetViews ... \n";

my $dbListRef = $mdHandle->GetViews();

foreach ( @{$dbListRef}) {
print "Name = $_->{Name}, ViewOID = $_->{ViewOID}, Owner = $_->{Owner}, CreateDate = $_->{CreateDate} \n";
}


####################################################################
#
# GetTriggers
# + Get a list of views in present database, Useful for drill
# down to view details
# + Input : None
# + Output : Ref to array of hashes containing:
# TriggerName
# TriggerOID
# TableName
# TableOID
#
####################################################################
Example:

print "\n Testing GetTriggers ... \n";

my $dbListRef = $mdHandle->GetTriggers();

foreach ( @{$dbListRef}) {
print "TriggerName = $_->{TriggerName}, TriggerOID = $_->{TriggerOID}, TableName = $_->{TableName}, TableOID = $_->{TableOID} \n";
}


####################################################################
#
# GetRIs
# + Get a list of referential integrities in present database
# + Input : None
# + Output : Ref to array of hashes containing:
# Name (name of referential inegtrity)
# RIOID
# FromTable
# FromTableOID
# ToTable
# ToTableOID
#
####################################################################
Example:

print "\n Testing GetRIs ... \n";

my $dbListRef = $mdHandle->GetRIs();

foreach ( @{$dbListRef}) {
print "Name = $_->{Name}, RIOID = $_->{RIOID}, FromTable = $_->{FromTable}, FromTableOID = $_->{FromTableOID}, ToTable = $_->{ToTable}, ToTableOID = $_->{ToTableOID} \n";
}


####################################################################
#
# GetIndexes
# + Get a list of indexes in present database
# + Input : None
# + Output : Ref to array of hashes containing:
# Name (name of index)
# OnTable
# CreateDate
#
####################################################################
Example:

print "\n Testing GetIndexes ... \n";

my $dbListRef = $mdHandle->GetIndexes();

foreach ( @{$dbListRef}) {
print "Name = $_->{Name}, OnTable = $_->{OnTable}, CreateDate = $_->{CreateDate} \n";
}


####################################################################
#
# DescribeTable
# + Get table details including column names, types, null/not null
# + Input : Table Name
# + Output : Ref to array of hashes containing:
# Name (of column)
# Type
# NullType (NULL/NOT NULL)
#
####################################################################
Example:

print "\n Testing DescribeTable ... \n";

my $dbListRef = $mdHandle->DescribeTable("MkEqTrade");

foreach ( @{$dbListRef}) {
print "Name -> $_->{Name}, Type = $_->{Type}, NullType = $_->{NullType} \n";
}


####################################################################
#
# DescribeProc
# + Get stored proc text excluding create statements, etc
# + Input : Proc Name
# + Output : Ref to array containing lines of text
#
####################################################################
Example:

print "\n Testing DescribeProc ... \n";

my $dbListRef = $mdHandle->DescribeProc("MkGetEqProduct");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# DescribeTrigger
# + Get trigger text excluding create statements, etc
# + Input : Trigger Name
# + Output : Ref to array containing lines of text
#
####################################################################
Example:

print "\n Testing DescribeTrigger ... \n";

my $dbListRef = $mdHandle->DescribeTrigger("trigEqProdUpd");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# DescribeView
# + Get view text excluding create statements, etc
# + Input : ViewName
# + Output : Ref to array containing lines of text
#
####################################################################
Example:

print "\n Testing DescribeView ... \n";

my $dbListRef = $mdHandle->DescribeView("vEqHeaders");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# GetUsers
# + Get names/groups of all users in this database
# + Input : None
# + Output : Ref to array of hashes containing:
# UserName
# UserID
# GroupName
# GroupID
#
#
####################################################################
Example:

print "\n Testing GetUsers ... \n";

my $dbListRef = $mdHandle->GetUsers();

foreach ( @{$dbListRef}) {
print "UserName = $_->{UserName}, UserID = $_->{UserID}, GroupName = $_->{GroupName}, GroupID = $_->{GroupID} \n";
}


####################################################################
#
# GetLogins
# + Get names of all server level logins
# + Input : None
# + Output : Ref to hash containing:
# LoginName
# LoginID
# DefaultDB
#
####################################################################
Example:

print "\n Testing GetLogins ... \n";

my $dbListRef = $mdHandle->GetLogins();

foreach ( @{$dbListRef}) {
print "LoginName = $_->{LoginName}, LoginID = $_->{LoginID}, DefaultDB = $_->{DefaultDB} \n";
}


####################################################################
#
# GetGroups
# + Get names of all groups in present database
# + Input : None
# + Output : Ref to hash containing:
# GroupName
# GroupID
#
####################################################################
Example:

print "\n Testing GetGroups ... \n";

my $dbListRef = $mdHandle->GetGroups();

foreach ( @{$dbListRef}) {
print "GroupName = $_->{GroupName}, GroupID = $_->{GroupID} \n";
}


####################################################################
#
# GetGroupMembers
# + Get list of all members of a given group
# + Input : GroupName
# + Output : Ref to hash containing:
# UserName
# UserID
#
####################################################################
Example:

print "\n Testing GetGroupMembers ... \n";

my $dbListRef = $mdHandle->GetGroupMembers("app_group");

foreach ( @{$dbListRef}) {
print "UserName = $_->{UserName}, UserID = $_->{UserID} \n";
}


####################################################################
#
# ExtractTableSQL
# + Get entire stored proc with drop/create statements
# + Input : Table Name
# + Output : Ref to array containing text
#
####################################################################
Example:


print "\n Testing ExtractTableSQL ... \n";

my $dbListRef = $mdHandle->ExtractTableSQL("MkEqProductLog");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# ExtractViewSQL
# + Get entire view with drop/create statements
# + Input : View Name or View OID
# + Output : Ref to array containing text
#
####################################################################
Example:

print "\n Testing ExtractViewSQL ... \n";

my $dbListRef = $mdHandle->ExtractViewSQL("vEqHeaders");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# ExtractProcSQL
# + Get entire stored procedure with drop/create statements
# + Input : Proc Name or Proc OID
# + Output : Ref to array containing text
#
####################################################################
Example:

print "\n Testing ExtractProcSQL ... \n";

my $dbListRef = $mdHandle->ExtractProcSQL("MkGetEqProduct");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# ExtractTriggerSQL
# + Get entire trigger with drop/create statements
# + Input : Trigger Name or Trigger OID
# + Output : Ref to array containing text
#
####################################################################
Example:

print "\n Testing ExtractTriggerSQL ... \n";

my $dbListRef = $mdHandle->ExtractTriggerSQL("trigEqProdUpd");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# ExtractRISQL
# + Get entire referential integrity with drop/create statements
# + Input : RI Name
# + Output : Ref to array containing text
#
####################################################################
Example:


print "\n Testing ExtractRISQL ... \n";

my $dbListRef = $mdHandle->ExtractRISQL("FK_EQTRDATTR_TRDID");

foreach ( @{$dbListRef}) {
print "$_ ";
}


####################################################################
#
# SearchProcNames
# + Search proc names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# ProcName
# ProcOID
#
####################################################################
Example:

print "\n Testing SearchProcNames ... \n";

my $dbListRef = $mdHandle->SearchProcNames("%Get%");

foreach ( @{$dbListRef}) {
print "ProcName = $_->{ProcName}, ProcOID = $_->{ProcOID} \n";
}


####################################################################
#
# SearchProcText
# + Search proc text for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# ProcName
# ProcOID
# Snippett (text within proc containing pattern)
#
####################################################################
Example:

print "\n Testing SearchProcText ... \n";

my $dbListRef = $mdHandle->SearchProcText("%select%");

foreach ( @{$dbListRef}) {
print "ProcName = $_->{ProcName}, ProcOID = $_->{ProcOID}, Snippett = $_->{Snippett} \n";
}


####################################################################
#
# SearchTriggerNames
# + Search trigger names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# TriggerName
# TriggerOID
# TableName
# TableOID
#
####################################################################
Example:

print "\n Testing SearchTriggerNames ... \n";

my $dbListRef = $mdHandle->SearchTriggerNames("%[Uu]pd%");

foreach ( @{$dbListRef}) {
print "TriggerName = $_->{TriggerName}, TriggerOID = $_->{TriggerOID}, TableName = $_->{TableName}, TableOID = $_->{TableOID} \n";
}


####################################################################
#
# SearchTriggerText
# + Search trigger text for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# TriggerName
# TriggerOID
# TableName
# TableOID
# Snippett (piece of code containing pattern)
#
####################################################################
Example:

print "\n Testing SearchTriggerText ... \n";

my $dbListRef = $mdHandle->SearchTriggerText("%ISIN%");

foreach ( @{$dbListRef}) {
print "TriggerName = $_->{TriggerName}, TriggerOID = $_->{TriggerOID}, TableName = $_->{TableName}, TableOID = $_->{TableOID}, Snippett = $_->{Snippett} \n";
}


####################################################################
#
# SearchColumns
# + Search column names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# ColumnName
# TableName
# TableOID
#
####################################################################
Example:

print "\n Testing SearchColumns ... \n";

my $dbListRef = $mdHandle->SearchColumns("%Product%");

foreach ( @{$dbListRef}) {
print "ColumnName = $_->{ColumnName}, TableName = $_->{TableName}, TableOID = $_->{TableOID} \n";
}


####################################################################
#
# SearchTableNames
# + Search table names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# TableName
# TableOID
#
####################################################################
Example:

print "\n Testing SearchTableNames ... \n";

my $dbListRef = $mdHandle->SearchTableNames("%Product%");

foreach ( @{$dbListRef}) {
print " TableName = $_->{TableName}, TableOID = $_->{TableOID} \n";
}


####################################################################
#
# SearchViewNames
# + Search view names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# ViewName
# ViewOID
#
####################################################################
Example:

print "\n Testing SearchViewNames ... \n";

my $dbListRef = $mdHandle->SearchViewNames("%Eq%");

foreach ( @{$dbListRef}) {
print " ViewName = $_->{ViewName}, ViewOID = $_->{ViewOID} \n";
}


####################################################################
#
# SearchViewText
# + Search view names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# ViewName
# ViewOID
# Snippett (bit of view containing pattern)
#
####################################################################
Example:

print "\n Testing SearchViewText ... \n";

my $dbListRef = $mdHandle->SearchViewText("%[Ss]elect%");

foreach ( @{$dbListRef}) {
print " ViewName = $_->{ViewName}, ViewOID = $_->{ViewOID}, Snippett = $_->{Snippett} \n";
}


####################################################################
#
# SearchIndexNames
# + Search index names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# IndexName
# TableName
# TableOID
#
####################################################################
Example:

print "\n Testing SearchIndexNames ... \n";

my $dbListRef = $mdHandle->SearchIndexNames("%EQ%");

foreach ( @{$dbListRef}) {
print " IndexName = $_->{IndexName}, TableName = $_->{TableName}, TableOID = $_->{TableOID} \n";
}


####################################################################
#
# SearchUsers
# + Search user names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# UserName
# UserID
#
####################################################################
Example:

print "\n Testing SearchUsers ... \n";

my $dbListRef = $mdHandle->SearchUsers("%app%");

foreach ( @{$dbListRef}) {
print " UserName = $_->{UserName}, UserID = $_->{UserID} \n";
}


####################################################################
#
# SearchGroups
# + Search group names for a given text pattern or sybase
# regular expression. Will validate regular expression first.
# + Input : Pattern (string with Sybase Reg Ex optional)
# + Output : Ref To Array of hashes containing:
# GroupName
# GroupID
#
####################################################################
Example:

print "\n Testing SearchGroups ... \n";

my $dbListRef = $mdHandle->SearchGroups("%app%");

foreach ( @{$dbListRef}) {
print " GroupName = $_->{GroupName}, GroupID = $_->{GroupID} \n";
}


####################################################################
#
# CloseConnection
# + Clean up and close DB handle
# + Input: None needed
#
####################################################################
Example:

$mdHandle->CloseConnection();


=head1 SEE ALSO

For more information on this and other modules written by the author see
the website - http://www.bmobrien.net or email to mikeob723@gmail.com

=head1 AUTHOR

Mike O\'Brien, E<lt>mikeob723@gmail.com<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2009 by Mike O\'Brien

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.


=cut



COPYRIGHT AND LICENCE

Put the correct copyright and licence information here.

Copyright (C) 2010 by Mike O\'Brien

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.