SQL文による jsql.pl の応用 (osql.cgi)


■ 目次

概要
簡単なCGIの例
使えるSQL文

概要

jsql.pl は SQL文を引数で受け取り、その結果を配列で返す Perl のライブラリーです。
下記は サンプルCGIの osql.cgi からSQL文を渡し jsql.pl で mydb.kakaku 内のkakauが、300以上のものを検索し、その結果を配列で osql.cgi に返す一連のプロセスを表しています。

osql.cgi のセットアップは、インストールガイドのデータベースの構築をご覧下さい。

osql.cgi
select * from
  mydb.kakaku
where kakaku >300
SQL文を渡す→
 

jsql.pl

 

mydb.kakaku
id hinmei kakaku
100001 りんご 130
100002 バナナ 30
100003 メロン 1200
100004 なし 240
100005 500
100006 ぶどう 345
id hinmei kakaku
100003 メロン 1200
100005 500
100006 ぶどう 345
←結果を返す。

上記の実行結果を実際に、ご覧になるには、こちらです。
SQL文の where kakaku >300 を where kakaku >400 に変えてると実行すると結果はこちらなります。
osql.cgiのソースをご覧になるにはこちらです。


簡単なCGIの例

#!/usr/local/bin/perl
require 'jsql.pl';                         # ライブラリーを宣言します。
$ENV{JSQL_PORT} = 'jsql';        # DBポートを宣言します。
$ENV{JSQL_USER} = 'ris';         # SQL文の実行アカウント
@list = &jsql'exec("select * from mydb.kakaku where kakaku>300");     # SQLの実行

print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<BODY>\n";
foreach (@list){                                       # 実行結果全て表示する
   print "$_<BR>";
}
print "</table>\n";
print "</BODY>\n";
print "</HTML>\n";
__END__

上記を実行すると戻り値として、配列 @listに以下の値が代入されます。(\tはタブ)

@list = ("100003\tメロン\t1200","100005\t苺\t500","100006\tぶどう\t345")

$ENV{JSQL_USER} を省略するとゲストアカウントで実行されます。
また、$ENV{JSQL_USER} に sa を指定することはできません。

 

使えるSQL文 説明書作成中 ...

SELECT [ DISTINCT ] * | 項目1,項目2,項目3 .... FROM [db_name.]tbl_name [ WHERE .... ]

SELECT 項目 [ AS [日本語項目名] ] FROM [db_name.]tbl_name  ORDER BY   項目1,項目2 [ DESC ]

INSERT INTO [db_name.]tbl_name ( * | 項目1,項目2,項目3 .... ) VALUES (値1,値2,値3 ....)

INSERT INTO [db_name.]tbl_name ( * | 項目1,項目2,項目3 .... ) SELECT .......

UPDATE [ FROM ] [db_name.]tbl_name SET 項目1=値1, 項目2=値2, 項目3 = 値3 .... [ WHERE .... ]

DELETE  [ FROM ] [db_name.]tbl_name [ WHERE .... ]

WHERE 項目 = '値' AND ( 項目 >= 値 OR 項目 like "%値%" OR 項目 IS NULL )

 


Copyright (C) RIS
http://www.nlwww.com/jp/ris/osql01.htm 
research@nlwww.com