如何从批处理文件执行sql文件并在屏幕上显示输出

时间:2019-08-08 10:12:28

标签: oracle batch-file sqlplus

我有一个(test.batch)批处理文件,该文件调用(gett.sql)sql文件并执行它。

问题是如何在屏幕上向用户显示sql文件的输出。

test.batch文件:

@echo off
set mypath=%cd%
@ECHO Counter...
set user_name=hr
set password=hr
set net_service_name=ORCL
echo exit | sqlplus -s %user_name%/%password%@%net_service_name% @%mypath%\gett.sql
pause

gett.sql文件:

SET ECHO ON
DECLARE
BEGIN
  FOR i IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE('Message# '||i);
  END LOOP;
END;

PAUSE

1 个答案:

答案 0 :(得分:3)

您所做的一切都正确(确定,几乎一切):

M:\a1_maknuto>@test
Counter...

Message# 1
Message# 2
Message# 3
Message# 4
Message# 5

PL/SQL procedure successfully completed.

Press any key to continue . . .

M:\a1_maknuto>

您错过的是一个斜杠,该斜杠终止gett.sql脚本中的PL / SQL块;另外,不要忘记启用SET SERVEROUTPUT ON的输出:

SET ECHO ON
SET SERVEROUTPUT ON       --> this
DECLARE
BEGIN
  FOR i IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE('Message# '||i);
  END LOOP;
END;
/                         --> this
PAUSE