オラクル10でのperlのプレースフォルダーを使用した日付型データの入力方法

このQ&Aのポイント
  • オラクル10で、perlのプレースフォルダーを使用して日付型のデータを入力する方法について教えてください。
  • オラクル10で、perlのプレースフォルダーで日付型のデータを入力する方法について知りたいです。
  • オラクルのSYSDATE値を使用して名前と一緒にインサートする方法を教えてください。
回答を見る
  • ベストアンサー

オラクル10で、perlのプレースフォルダーで日付型のデータを入れようとしていますがどのようにすればよいのでしょうか

オラクル10で、perlのプレースフォルダーで日付型のデータを入れようとしていますがどのようにすればよいのでしょうか? オラクルのSYSDATE値と名前をインサートしたいのですが 以下の、[]の2つの部分がかわりません。 REGはDATE型です。 [オラクルのSYSDATE値の取得する] my $datetime = [オラクルのSYSDATE値をセットする]; my $sql = qq{insert into TEST (REG, NAMAE) VALUES (?, ?)}; my $sth = $dbh1->prepare( $sql ); $sth->bind_param(1, $datetime ); $sth->bind_param(2, "山田" ); $sth->execute(); よろしくお願いいたします。

  • bazax
  • お礼率5% (12/228)
  • Oracle
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • mae-stro
  • ベストアンサー率29% (14/47)
回答No.1

SYSDATEの値(システム日付)ならバインドしなくてよいと思います。 my $sql = qq{insert into TEST (REG, NAMAE) VALUES (SYSDATE, ?)}; my $sth = $dbh1->prepare( $sql ); $sth->bind_param(1, "山田" ); $sth->execute();

関連するQ&A

  • perl初心者なのですが

    use strict; use CGI; use DBI; my $dbh = DBI->connect("dbi:ODBC:DB_test"); my $NAME1 = CGI->new(); my $ADDRESS1 = CGI->new(); my $LETTER_NUM1 = CGI->new(); my $TEL_NUM1 = CGI->new(); my $NAME = $NAME1->param('name'); my $ADDRESS = $ADDRESS1->param('address'); my $LETTER_NUM = $LETTER_NUM1->param('letter_num'); my $TELL_NUM = $TEL_NUM1->param('tell_num'); my $sth = $dbh->prepare("INSERT INTO table1(name1,address1,letter_num1,tell_num1) values(?,?,?,?)"); $sth->execute($NAME,$ADDRESS,$LETTER_NUM,$TELL_NUM); $sth->finish; $dbh->disconnect; フォームから受け取ったデータをデータベースに格納したいのですが、うまくいきません。誰か教えてください。

  • perlのプレースフォルダでData型にデータをセットしたい

    perlのプレースフォルダを使ってOracle10のData型にデータをセットしたのですが、以下のエラーメッセージが表示されます。 Cannot execute. DBD::Oracle::st execute failed: ORA-01830: 日付書式の変換で不要なデータが含まれています データは、"2007/04/30 17:39:55"という文字列をbind_paramしているのですが、オラクルでは、DATE型をエラーなしでセットするにはどうしたらよいのでしょうか?

  • MySQLのトランザクションについて

    初めて質問します。 今、PerlのDBIを使ってMySQLのトランザクション処理にチャレンジしています。 ところが、rollback処理がうまくできません。 具体的には、 table2 がある状態で下のプログラムを動かすと、 エラーの表示が出るのに、 table1 は作成されました。 何らかのエラーがあれば、どちらも作成されないようにしたいです。 ======================================================= my %sql; $sql{db_name} = "database"; $sql{host} = "localhost"; $sql{user_name} = "user_name"; $sql{password} = "password"; use DBI; my $dbh = DBI->connect('DBI:mysql:'.$sql{db_name}.':'.$sql{host}, $sql{user_name}, $sql{password} ,{RaiseError => 1, PrintError => 0, AutoCommit => 0 }) || &Err(); my $sth; my $re; eval { my $sql_string1 = "create table table1(`id` int);"; my $sql_string2 = "create table table2(`id` int);"; $sth = $dbh->prepare($sql_string1); $re = $sth->execute; $sth = $dbh->prepare($sql_string2); $re = $sth->execute; }; if ($@) { $tag="Err:".$@."\n"; $sth = $dbh->rollback; }else{ $sth = $dbh->commit; } $sth->finish; $dbh->disconnect; ======================================================= 検索して、いろいろいじっても解決しませんでした。 どうかよろしくお願いします。

    • ベストアンサー
    • Perl
  • perl+mysqlで変数が使えなくて困ってます。

    use DBI; $id=1; $nm="gootarou"; $mm="friend"; $user = '***'; $passwd = '***'; $db = 'DBI:mysql:***'; $dbh = DBI->connect($db, $user, $passwd); $sth = $dbh->prepare("INSERT INTO list (id,name,memo) VALUES ($id,$nm,$mm)"); $sth -> execute; $sth -> finish; $dbh -> disconnect; exit; mysqlの勉強を始めたところでいきなり壁にぶちあたってしまいました^^; googleその他で検索かけてみましたが解決に至りませんでしたので 質問させてください。 >$sth = $dbh->prepare("INSERT INTO list (id,name,memo) VALUES ($id,$nm,$mm)"); ↑ここの部分を >$sth = $dbh->prepare("INSERT INTO list (id,name,memo) VALUES ('1','gootarou','friend')"); と直接入力してやれば問題なく登録されるのですが、変数を使うと正常に処理がされません。 数字を変数に代入したものは大丈夫なのですが 英字や二バイト文字を変数に代入したものが問題あるようです。 それぞれのフォームの型はvarchar(100)で設定しています。 ループで一括処理したいのですが変数が使えないことには・・と困ってます。 よろしくお願いします。

  • fetchrow_arrayとfetchrow_hashrefの使い方

    Jやまとです。 PerlからSELECT文を実行して結果の行の値を取得する単純なスクリプトを作成しています。 (1)fetchrow_array使用 (2)fetchrow_hashref使用 以上2通りの方法で試したのですが、(2)がInternal Server Errorになります。 原因が全く分かりません。 分かる方いらしゃいましたら、ご教授願います。 OS:TurboLinux6.2 DB:Oracle8i Apache,PerlはTurboLinux6.2に入っているものをそのまま使用 以下、ソースを記載します。 --------------- (1)fetchrow_arrayを使用して行の値を取得(こっちは動く) $dbh = DBI->connect($ds, $user, $pass) || &dbErr("Database can't connect." . $DBI::errstr); $sql = "SELECT SYSDATE FROM DUAL \n"; $sth = $dbh->prepare( $sql ); $sth->execute or die "Cannot execute. " . $sth->errstr(); $cnt1 =1; while (@row = $sth->fetchrow_array()) { @{$get_date[$cnt1]} = @row; $cnt1++; } --------------- (2)fetchrow_hashrefを使用して行の値を取得(こっちが動かない) $dbh = DBI->connect($ds, $user, $pass) || &dbErr("Database can't connect." . $DBI::errstr); $query = qq{ SELECT SYSDATE FROM DUAL }; $sth = dbh->prepare($query); $sth->execute(); # 実行 if($sth->rows() != 1){ # 該当する行数 # エラー処理 } $rhash = $sth->fetchrow_hashref(); %hash = {%{$rhash}}; $sth->finish(); $get_date = $hash{SYSDATE}; --------------- (2)実行時のerror_log Can't locate object method "prepare" via package "dbh" at /u01/ora1/www/htdocs/hoge.cgi line 30. Premature end of script headers: /u01/ora1/www/htdocs/hoge.cgi --------------- (本文長くてすみません)

    • ベストアンサー
    • Perl
  • perlでdb(mysql)に接続

    perlでdb(mysql)に接続し、取得したデータを 表示させるというようなことをしたいのですが、うまく いきません。 ファイル名test.cgi mysqlのバージョンは 5.0.45で 記述は以下です。 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:mysql:database, "userid", "password"); my $sth = $dbh->prepare('SELECT * FROM tablename'); $sth->execute; print "Content-Type: text/plain\n\n"; print "\n"; while(my @row = $sth->fetchrow_array) { print "$row[0]:$row[1]\n"; } $sth->finish(); $dbh->disconnect(); exit; ブラウザで確認すると何も表示されず、ログとして 以下のエラーが確認できます。 DBD::mysql::st execute failed: Table 'database.tablename' doesn't exist at test.cgi line 8. DBD::mysql::st fetchrow_array failed: fetch() without execute() at test.cgi line 11. my $sth = $dbh->prepare('SELECT * FROM tablename'); で指定したテーブルは存在しておりますし、SQL文の記述も 問題ないと思われます。 また、ファイルのパーミッションは705(755でも同様の結果)です。 perl初心者のため、どこが問題なのか検討がつきません。 ご助言いただきたく存じます。 よろしくお願いいたします!

    • ベストアンサー
    • Perl
  • pdoでバインドしない場合のデメリット

    $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'); $sth->bindParam(':calories', $calories, PDO::PARAM_INT); $sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12); $sth->execute(); 上記ではなく $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array($calories,$colour)); のようにbindParamやbindValueを使わない場合は危険はあるのでしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • PerlソースでのSQLのエラーについて

    お世話になります。 下記のCGIで掲示板を作成したいと思っているのですが、エラーが出てしまい設置できずにおります。 http://plus-code.net/cgi-flash-bbs/perlbbs/ サポートも終了してしまっていてお手上げ状態です・・・。 エラー内容は以下の通りです。 DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1 at C:/www/users/○○○/cgi-bin/config.cgi line 87. 87行目近辺のソースはこのような感じでした。 *********************************** my $dbh = DBI->connect("DBI:mysql:$in{d_databasename}:$in{d_hostname}", $in{d_username}, $in{d_password},{RaiseError => 1, PrintError => 0, AutoCommit => 0 }) || &error_html($ref_ini->{action_error}{db_er1});      //line 70 my $user="forum"; my $pass=&Cf::Random::d_crypt($user); my $random_url=&Cf::Random::az09($ref_ini->{setup}{adjust30}); my @que=( "insert into public values(1,'','','','','','','http://','',0,1,0,3000,10,10,10,30,7,0,1,3000,1,1,'','$random_url','default','default','','','');", "insert into member values('u$tm','$user','$ip','$pass','','webmaster',0,0,'',0)", "insert into section values('s$tm',0,'section_title','section_explain','webmaster','$user')", "insert into forum values('f$tm','s$tm',0,'forum_title','forum_explain','webmaster','$user')", "insert into contact values('c$tm','$user','webmaster','to_forum','webmaster','message title','message comment','','')", "insert into clap values('s$tm','f$tm','t$tm','p$tm','w$tm','$user','$ip','testclap',10)", "insert into post values('s$tm','f$tm','t$tm','p$tm','$user','webmaster','$ip','test title','test message','','',1,'')", "insert into report values('r$tm','p$tm','$user','report title','report message')" ); eval{my ($sth); for (my $j=0;$j<scalar(@{$$ref_sql{create_table}});$j++) {      //line 87 $sth = $dbh->prepare($ref_sql->{create_table}[$j]);$sth->execute; }#for end for my $j(@que){$sth = $dbh->prepare($j);$sth->execute; $sth->finish;}$dbh->commit;$dbh->disconnect;}; if($@){$dbh->rollback;$dbh->disconnect;&error_html($@);}      //line 95 *********************************** 何卒宜しくお願い致します!

    • ベストアンサー
    • Perl
  • ハッシュのキー追加について

    とある既存プログラムに機能追加したいのですが上手くいきません。 ハッシュだとは思うのですが、%だったり$だったりしてよくわからなくなってしまいました。 どこがおかしいか教えていただけないでしょうか。 <概要> もともとあった(1)と(3)の処理の間に、(2)を行う <ソース> (1)DBから1レコードを取得する $sql = "select * from tenpo where id=5;"; $sth = $dbh->prepare($sql); $sth->execute(); $shop = $sth->fetchrow_hashref(); (2)別TABLEから値を取得し、(1)に追加する $sql = "select todoufuken from area where id=5;"; $sth = $dbh->prepare($sql); $sth->execute(); @todoufuken= $sth->fetchrow_array; $shop{place} = $todoufuken[0]; (3)$shopの情報をサブルーチンに渡す ソース略

    • ベストアンサー
    • Perl
  • DBIで抽出処理

    PerlのDBIで質問があります。 以下のようなDBがあり、プレースフォルダを使っているのですが 0,2件のマッチはエラーとなり、1件を変数(@hozon)に入れる処理をしたいのですがどのように 記述したらよいのでしょうか? @hikaku = qw(国語 算数 理科 保健); @hozon = (); FLD1 FLD2 ----------- 50 国語 0 国語 60 算数 70 理科 80 社会 $query = qq{select FLD1 from TBL1 where FLD2=?;}; $sth = $dbh->prepare( $query ) or die "Cannot preprae. $query" . $dbh->errstr(); for($i=0; $i<=$#hikaku; $i++){ $sth->bind_param(1, $hikaku[$i]); $sth->execute() || die $sth->errstr; # 0,2件のマッチはエラーとなり、1件を変数(@hozon)に入れる処理をしたいのですがどのように # 記述したらよいのでしょうか? ???? }