【问题标题】:How to execute sql file from batch file and display output to screen如何从批处理文件执行sql文件并将输出显示到屏幕
【发布时间】:2019-12-16 00:34:44
【问题描述】:

我有 (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

【问题讨论】:

    标签: oracle batch-file sqlplus


    【解决方案1】:

    你做的一切都是正确的(好吧,几乎一切):

    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
    

    【讨论】:

    • 谢谢,它很好用,但是我得到'输入被截断为 n 个字符',发现我必须在 sql 文件的末尾插入新行
    • 不客气。如果您必须修复 截断输入 并设法做到这一点 - 对您有好处!我很高兴你成功了。
    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多