home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / xampp / xampp-perl-addon-1.4.9-installer.exe / GetInfo.pm < prev    next >
Encoding:
Text File  |  2002-06-07  |  2.6 KB  |  82 lines

  1. #!/usr/local/bin/perl -w
  2. # vim:ts=4:sw=4:tw=78:
  3. #
  4. use strict;
  5.  
  6. package DBD::ADO::GetInfo;
  7.  
  8. use DBI            qw(:sql_types);
  9. use vars         qw(%info %odbc2ado);
  10.  
  11. my $fmt = '%02d.%02d.%1d%1d%1d%1d';       # ODBC version string: ##.##.#####
  12.  
  13. my $sql_driver_ver = sprintf $fmt, split(/[\._]/, $DBD::ADO::VERSION);
  14.  
  15. %info = (
  16.      41 => \&sql_catalog_name_separator   # SQL_CATALOG_NAME_SEPARATOR
  17. ,    22 => \&sql_concat_null_behavior     # SQL_CONCAT_NULL_BEHAVIOR
  18. ,     6 =>  $INC{'DBD/ADO.pm'}            # SQL_DRIVER_NAME               # XXX
  19. ,     7 =>  $sql_driver_ver               # SQL_DRIVER_VER                # XXX
  20. ,    28 => \&sql_identifier_case          # SQL_IDENTIFIER_CASE
  21. ,    29 => \&sql_identifier_quote_char    # SQL_IDENTIFIER_QUOTE_CHAR
  22. ,    89 => \&sql_keywords                 # SQL_KEYWORDS
  23. );
  24.  
  25. %odbc2ado = (
  26.     114 => 'Catalog Location'             # SQL_CATALOG_LOCATION
  27. ,    42 => 'Catalog Term'                 # SQL_CATALOG_TERM
  28. ,     2 => 'Data Source Name'             # SQL_DATA_SOURCE_NAME
  29. ,    17 => 'DBMS Name'                    # SQL_DBMS_NAME
  30. ,    18 => 'DBMS Version'                 # SQL_DBMS_VERSION
  31. #     6 => 'Provider Name'                # SQL_DRIVER_NAME               # XXX
  32. #     7 => 'Provider Version'             # SQL_DRIVER_VER                # XXX
  33. ,    40 => 'Procedure Term'               # SQL_PROCEDURE_TERM
  34. ,    39 => 'Schema Term'                  # SQL_SCHEMA_TERM
  35. ,    45 => 'Table Term'                   # SQL_TABLE_TERM
  36. ,    47 => 'User Name'                    # SQL_USER_NAME
  37. );
  38.  
  39. sub sql_catalog_name_separator {
  40.     my $dbh = shift;
  41.     DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'CATALOG_SEPARATOR') ||'.';
  42. }
  43. sub sql_concat_null_behavior {
  44.     { 1 => 0 # SQL_CB_NULL
  45.     , 2 => 1 # SQL_CB_NON_NULL
  46.     }->{$_[0]->{ado_conn}->Properties->{'NULL Concatenation Behavior'}{Value}};
  47. }
  48. sub sql_identifier_case {
  49.     { 1 => 1 # SQL_IC_UPPER
  50.     , 2 => 2 # SQL_IC_LOWER
  51.     , 4 => 3 # SQL_IC_SENSITIVE
  52.     , 8 => 4 # SQL_IC_MIXED
  53.     }->{$_[0]->{ado_conn}->Properties->{'Identifier Case Sensitivity'}{Value}};
  54. }
  55. sub sql_identifier_quote_char {
  56.     my $dbh = shift;
  57.     DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'QUOTE') ||
  58.     DBD::ADO::db::ado_schema_dbinfo_literal($dbh,'QUOTE_PREFIX') ||'"';
  59. }
  60. sub sql_keywords {
  61.     my $dbh = shift;
  62.     my $sth = $dbh->func('adSchemaDBInfoKeywords','OpenSchema');
  63.     my @Keywords = ();
  64.     while ( my $row = $sth->fetch ) {
  65.         push @Keywords, $row->[0];
  66.     }
  67.     return join ',', @Keywords;
  68. }
  69.  
  70.  
  71.  
  72. 1;
  73.  
  74. __END__
  75.  
  76. #
  77. # $Log: GetInfo.pm,v $
  78. # Revision 1.1  2002/04/14 04:19:18  talowery
  79. # Added additional tests and new module.
  80. #
  81. #
  82.