ローを挿入するには、開かれた接続へのハンドルが必要です。最も簡単な方法は、パラメーター化された INSERT 文を使用する方法です。この場合、疑問符が値のプレースホルダーとして使用されます。この文は最初に準備されてから、新しいローごとに 1 回実行されます。新しいローの値は、execute メソッドのパラメーターとして指定されます。
次のサンプルプログラムは、2 人の新しい顧客を挿入します。ローの値はリテラル文字列として表示されますが、これらの値はファイルから読み込むことができます。
#!/usr/local/bin/perl -w # use DBI; use strict; my $database = "demo"; my $data_src = "DBI:SQLAnywhere:SERVER=$database;DBN=$database"; my $uid = "DBA"; my $pwd = "sql"; my $ins_stmt = "INSERT INTO Customers (ID, GivenName, Surname, Street, City, State, Country, PostalCode, Phone, CompanyName) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; my %defaults = ( AutoCommit => 0, # Require explicit commit or rollback. PrintError => 0 ); my $dbh = DBI->connect($data_src, $uid, $pwd, \%defaults) or die "Can't connect to $data_src: $DBI::errstr\n"; &db_insert($ins_stmt, $dbh); $dbh->commit; $dbh->disconnect; exit(0); sub db_insert { my($ins, $dbh) = @_; my($sth) = undef; my @rows = ( "801,Alex,Alt,5 Blue Ave,New York,NY,USA,10012,5185553434,BXM", "802,Zach,Zed,82 Fair St,New York,NY,USA,10033,5185552234,Zap" ); $sth = $dbh->prepare($ins); my $row = undef; foreach $row ( @rows ) { my @values = split(/,/, $row); $sth->execute(@values); } } __END__ |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |