スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

DOSとPL/SQLコマンドの挙動について

タスク起動系のコマンドとその挙動について

コマンド  HOST
タイプ    SQL*Plus
挙動      処理が終わるまで呼び出し元は停止する
参考      PL/SQL内では使用不可、DOS環境変数が使えない?
コマンド  CALL
タイプ    DOS
挙動      処理が終わるまで呼び出し元は停止する
参考
コマンド  START
タイプ    DOS
挙動      処理はすぐに呼び出し元に戻されるが、/WAITを付ければCALLと同じ動きになる
参考      新プロセスを開きコマンドを実行

WSHによるタスクについて

  • DOSコマンドを起動する(同期)
    Set wShell = CreateObject("WScript.Shell")
    Set oExec = wShell.Exec("cmd.exe /c sample 10 > .\red_network.txt")
    MsgBox oExec.StdOut.ReadAll()
  • DOSコマンドを起動する(非同期)
    Set wShell = CreateObject("WScript.Shell")
    wShell.Run "cmd /c dir > .\test.log"

タスクの一時停止について

DOSの場合、一時停止する方法が無い為、VBScriptを使用する
sleep.bat

echo off
REM Sleep.bat [秒数]
set /a wtime=(%1+0)*1000
echo WScript.Sleep %wtime% > tmp.vbs
cscript //NoLogo tmp.vbs
del tmp.vbs
set wtime=

PL/SQLの場合次のパッケージを使用する

DBMS_LOCK.SLEEP(300);

SQL*Plusを使用したデータの取得

変数&t_dayにシステム日付を代入する。

column tday new_value t_day
select to_char(sysdate, 'yyyymmdd') as tday from dual;
SQL> select'&t_day' "今日" from dual;
旧   1: select'&t_day' "今日" from dual
新   1: select'20050708' "今日" from dual
今日
--------
20050708
SQL>