将sqlplus输出传递给csh变量

时间:2015-07-18 09:02:38

标签: sqlplus csh

存储sqlPlus块输出的正确csh语法是什么?

$proc = 'process name'
$serv = 'service name*'
$ram = 10MB
$inter = 1
$data = Get-Date -format "yyyy/MM/dd HH:mm:ss"
$log = "c:\log.txt"
$stat = Get-Process $proc -EA SilentlyContinue

while ($true) {
    if ((Get-Process $proc -EA SilentlyContinue | Select-Object -Exp ws) -gt $ram) {
        Restart-Service $serv
        Add-Content -path $log -value ($data + "`t" + "Restarting")
        Start-Sleep -m 10000
        if ($stat -ne $null) {
            Add-Content -path $log -value "Working"
        } else {
            Start-Service $serv
            Add-Content -path $log -value ($data + "`t" + "Starting")
        }
    }

    Start-Sleep -s $inter
}

在这个例子中,我希望能够为csh脚本中的变量赋值“1”。使用另一个shell变体不是一种选择。

1 个答案:

答案 0 :(得分:0)

您需要将SQL * Plus中的变量写入一个文件,然后一旦控制权返回到您的CSH程序就可以获取该文件。

请注意,我还将向您展示如何使用column语句将SQL * Plus列值的输出存储在SQL * Plus变量中。如果你的代码很简单,你可以跳过这一步,但我认为这是一个值得的补充。

sqlplus -s apps/apps@VIS <<SQL
set feedback off
set linesize 100
set lines 150
set pages 0
set head off
set serveroutput on size 10000
column result new_value result

select 1 as result from dual;

prompt Variable result = &result.

spool output.csh
prompt set result = &result.
spool off
SQL

source output.csh
echo "Back in CSH and result = $result "