我见过各种例子,但我无法使用DBI。我如何在外部sql脚本中使用perl变量?例如,我想要的perl脚本中的代码是:
$text = 'Germany';
@sql_output = `sqlplus -s user/pass\@databasename <<!
@/pathtofile/test.sql;
QUIT;
!`;
print @sql_output;
sql脚本将是:
SELECT DISTINCT City FROM Customers
Where Country = '$text'
(举个例子,我使用的代码来自w3schools.com sql tutorial http://www.w3schools.com/SQl/trysql.asp?filename=trysql_select_distinct)
我通过搜索找到的一个例子是:
@/pathtofile/test.sql $text;
但是当我用我的代码尝试它时,它不起作用。这是将perl变量合并到外部sql脚本中的正确方法吗?
答案 0 :(得分:0)
OR
答案 1 :(得分:0)
这个工作,基本上流程如下
试试让我知道。
test.pl
#!/usr/bin/perl
$text = 'Germany1';
open(HEADER,"SQLQuery.sql");
while(<HEADER>) { $_ =~ s/\$text/$text/g; $output .= $_; }
close(HEADER);
print "$output";
open (MYFILE, '>SQLQueryTemp.sql');
print MYFILE $output;
close(MYFILE);
#SQLQueryTemp.sql contains the $text replaced with 'Germany'
#@sql_output = `sqlplus -s user/pass\@databasename <<!
#@/pathtofile/SQLQueryTemp.sql;
#QUIT;
#!`;
#print @sql_output;
SQLQuery.sql
SELECT DISTINCT City FROM Customers
Where Country = '$text'