簡體   English   中英

如何在SQL腳本中使用Perl變量(使用反引號)

[英]How to use a Perl variable in a SQL script (using backticks)

我已經看到了各種示例,但是我無法使用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教程http://www.w3schools.com/SQl/trysql.asp?filename=trysql_select_distinct

我通過搜索發現的一個例子有:

@/pathtofile/test.sql $text;

但是當我用代碼嘗試時,它不起作用。 這是將perl變量合並到外部sql腳本中的正確方法嗎?

  1. 定義您的替換變量
  2. 根據您的test.sql內容在此處文檔中使用它們
  3. 將其保存到test.sql
  4. 執行反引號命令

要么

  • 如果您想學習基本的SQL,請執行以下操作:安裝具有允許交互式/臨時查詢的GUI的DBMS(例如SQLite / SQliteman / SQLite瀏覽器插件,MySQL / MySQLWorkbench,Access,OO / LO Base等)
  • 如果要使用Oracle,請:進行完整/有效的安裝(如果腳本語言為Perl,則包括DBD:Oracle)

這一項工作,基本上流程如下

  1. 打開SQL文件
  2. 將$ text替換為變量值
  3. 將其寫入臨時文件
  4. 在臨時文件上執行SQL plus(每次重新運行時,它將替換該文件)

試試吧,讓我知道。

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM