スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
とりあえず MySQLとの連携
main.pl
use strict;
use warnings;
use Data::Dumper;
use Util_DB;

main();

sub main {
  my $db   = Util_DB->new({
                           'dsn'      => 'myapp',
                           'user'     => 'root',
                           'password' => ''
                         });

  $db->main::select_class_a();
  print "----", "\n";
  $db->main::select_class_a('bb');
}
 
sub select_class_a {
  my $dbh  = shift->{'dbh'};
  my $name = shift;
 
  my $sql;
  my $sth;
  if( !defined $name ){
    $sql = q{ 
              SELECT
                *
              FROM
                class_a
            };
    $sth   = $dbh->prepare($sql); 
    $sth->execute();
  }else{
    $sql = q{ 
              SELECT
                *
              FROM
                class_a
              WHERE
                name = ?
            };
    $sth   = $dbh->prepare($sql); 
    $sth->execute($name);
  }


  while(my $row = $sth->fetchrow_hashref()){
    print Dumper $row;
  }
}


Util_DB.pm
use strict;
use warnings;
use DBI;

package Util_DB;

sub new {
  my $self  = shift;
  my $class = ref($self) || $self;

  my $c      = shift;

  my $dbh = DBI->connect(
                         'DBI:mysql:database=' . $c->{'dsn'},
                         $c->{'user'},
                         $c->{'password'},
                         {'PrintError'=>1, 'RaiseError'=>1}
                        );

  return bless {'dbh' => $dbh}, $class;
}

1;

結果:
$VAR1 = {
          'name' => 'aa',
          'id' => '1'
        };
$VAR1 = {
          'name' => 'bb',
          'id' => '2'
        };
$VAR1 = {
          'name' => 'yy',
          'id' => '3'
        };
----
$VAR1 = {
          'name' => 'bb',
          'id' => '2'
        };
※ 参考にしないでください。
スポンサーサイト
Oracle エクスポート
Oracleでエクスポートしたければ、


exp


である。

バッファサイズ そのまま
全データベース そのまま
権限をエクスポート そのまま
表データをエクスポート そのまま
エクステントを圧縮 そのまま
ユーザー名 エクスポートしたいユーザ
(ユーザ名は複数可能なので繰り返される もういいなら空でエンターキー)

こんな感じで使える。
届いた
070906_0027~01.jpg


よし、じゃあ名刺にマーク入れとくか。
って名刺、未だ発行してない。。。。

そして、発行する予定もない。。。。


まあ、俺なんか特に何にもできんしね。
Oracle Master Bronze 合格
Oracle Master Bronze 合格しました。

マスターと呼んで下さい(笑) 銅メダルだけど。


ヒヤヒヤものでした。
Oracleの暗黙の型変換
Oracleは実は、暗黙に型変換を行っている。

だから、WHERE句で、

DATE型の列 = '07-08-05'

なんてしても、エラーにならず結果が返ってくる。

'  ' で囲まれたのってのは「文字列リテラル」のはずであって、文字列であってDATEではないはず。そこでDATE型の列にTO_CHAR(列名,'YY-MM-DD')みたいな処理が暗黙的にかかって結果が返される。


びっくりしたのが、

CREATE TABLE T3 (
C NUMBER(5,1)
);

でつくったテーブルT3に

INSERT INTO T3 (C) VALUES ('2.22');
でも
INSERT INTO T3 (C) VALUES (2.22);
でも インサートできたこと(小数点以下1桁なので、2.2となり1桁分捨てられた)。

だから、'  'で囲まれたのって文字じゃないのかーーーー。
俺の理解が間違っているのかーーーーー。

暗黙の型変換がインサートのときも起こっているのだろうか・・・・
エラーじゃないのそこは・・・・・ orz


ちなみに、
INSERT INTO T3 (C) VALUES (to_char('3.22'));
でもインサート成功しました。

うーん、うーん どうなっているんだ・・・・・・


参考資料:
リテラル - oracle tips and tricks
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

ブロとも申請フォーム

この人とブロともになる

| ホーム | 次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。