- 締切済み
Perl MSSQLに接続してSQLのVer情報を
すみません。素人です。 Perl MSSQLに接続してSQLのバージョン情報を取得したいです。 コードを実行すると下のようなエラーが発生します。 Can't use string ("1") as a HASH ref while "strict refs" in use at C:\testPerl\test.pl SQLServer Mangement Studioでクエリー(select @@VERSION)を実行すると下のような情報を取得できます。 ******** (列名なし) Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Workgroup Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1) ********* どうも取得したデータ構造の指定がまずいように思いますが、どうすれば取得できますでしょうか? コード ------------------- use strict; use warnings; use Data::Dumper; use Win32::OLE; use Data::Dumper::Concise; use Win32::OLE::variant; use Win32::OLE::Const 'Microsoft ActiveX Data Objects 2.0 Library'; # DBサーバー名とDB名設定 my $server = "localhost"; my $db = ""; my $id = "sa"; my $ps = "testSa"; # エラー時に本処理を中止し、Perlがエラーメッセージを出力し、本プロセスが終了する。 Win32::OLE->Option(Warn => 3); # SQL Server 認証設定 my $connStr = "Provider=sqloledb;". "Data Source=$server;". "Initial Catalog=$db;". "User ID=$id;". "Password=$ps;"; # DB接続 my $objDB = Win32::OLE->new("ADODB.Connection"); $objDB->Open($connStr); $objDB->{Errors}->{Count} and die "cannot connect '$connStr'"; my $rs = Win32::OLE->new("ADODB.Recordset"); $rs->Open("select \@\@VERSION", $objDB); print "取りあえずなんか出力しようと試みる----------1\n"; print "$rs->{Fields}"."\n"; print "$rs->{Fields}->{Count}"."\n"; print "$rs->{Fields}->{Count}->{Item}->{1}"."\n"; while(!$rs->EOF ){ print "$rs->{Fields}->{Count}->{Value}"."$rs->{Fields}->{Item}->{Value}\n"; $rs->MoveNext(); } print "取りあえずなんか出力しようと試みる----------1\n"; ## DB切断 $objDB->Close();
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kawais070
- ベストアンサー率52% (2242/4283)
Perlのことはよく知りませんが、 select @@version as v というように、列名をvと名前をつければ、通常のSQLと同じように取得ができるかと思います。