2009-12-27 47 views
1

爲什麼我得到兩次「ANSI」而不是第一次「ANSI」,第二次是「AnyData」?如何在SQL :: Parser中設置方言?

#!/usr/bin/perl 
use warnings; 
use strict; 
use 5.010; 
use SQL::Parser;         


my $parser = SQL::Parser->new(); 


my @dialects = $parser->list('dialects'); 
say "available dialects : @dialects"; # AnyData CSV ANSI 


my $dialect = $parser->dialect; 
say "Current dialect: $dialect"; # ANSI 


my $dialect_name = 'AnyData'; 
$parser->dialect($dialect_name); # load a dialect configuration file 
$dialect = $parser->dialect; # get the name of the current dialect 
say "Current dialect: $dialect"; # ANSI 

回答

4

這似乎是在SQL中(?文檔)的bug ::分析器,AFAICT new()正在調用dialect(),它確保方言只設置一次,以防止您以後重新設置。 此更改明顯在版本1.003中完成

3

我得到相同的結果,但它似乎如果你指定在構造函數中方言的工作:

my $parser = SQL::Parser->new('AnyData', {RaiseError=>1}); 
say "Current dialect: " . $parser->dialect; # AnyData