簡體   English   中英

如何在shell腳本中使用oracle $$ PLSQL_LINE?

[英]How to use oracle $$PLSQL_LINE in a shell script?

我想記錄一個shell腳本中一個獨立塊的行號。

我正在嘗試使用以下代碼,但無法正常工作。 請讓我知道是否有可行的解決方案。

#!/bin/ksh

result=`sqlplus -s $DATABASE <<EOF
SET SET HEAD OFF;
SET PAGES 0;
SET FEEDBACK OFF;
SET SERVEROUTPUT ON SIZE UNLIMITED;
SET DEFINE OFF;

BEGIN
    DBMS_OUTPUT.put_line ('Line number: '|| $$plsql_line);
END;
/
EOF`
echo $result

我收到以下錯誤:

PLS-00103: Encountered the symbol "PLSQL_LINE" when expecting one of the following: 
) = - + < / > at in is mod remainder not rem => <an exponent (**)> <>
 or != or ~= >= <= <> and or like like2 like4 likec as between from using 
|| member submultiset The symbol "," was substituted for "PLSQL_LINE" to continue

$需要轉義:

DBMS_OUTPUT.put_line ('Line number: '|| \\$\\$plsql_line);

問題在於,here文檔(從第一個<<EOF )正在擴展shell變量(以$開頭的任何東西)。 您可以通過以下方式抑制該行為

  • 在每個$之前$一個反斜杠,
  • 或通過引用第一個EOF指出here文檔沒有有用的shell變量,例如,

    result =`sqlplus -s $ DATABASE <<“ EOF”

要么

result=`sqlplus -s $DATABASE <<'EOF'

進一步閱讀:

暫無
暫無

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

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