如何在SQL :: Parser中设置方言?

时间:2009-12-27 14:26:24

标签: sql perl

为什么我得到两次“ANSI”而不是第一次“ANSI”而第二次“AnyData”?

#!/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

2 个答案:

答案 0 :(得分:4)

这似乎是SQL :: Parser中的(文档?)错误,AFAICT new()正在调用dialect(),这可以确保方言只设置一次,从而阻止您重新设置它后来。 这一变化显然是在1.003版本中完成的。

答案 1 :(得分:3)

我得到相同的结果,但如果你在构造函数中指定方言它似乎确实有效:

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