【问题标题】:Trying to to Store Value of PL/SQL Block in UNIX Variable试图在 UNIX 变量中存储 PL/SQL 块的值
【发布时间】:2020-10-04 17:37:24
【问题描述】:

UNIX 代码:

#!/bin/sh

if [ $# -gt 0 ]

    then

    ## Checking wheather or all the Server Objects are up and working

        if [[ $1 = 'PreCheck' ]];then

            COUNT_SERV=`${ORACLE_HOME}/bin/sqlplus ${dbConnect} <<GETCOUNT|tee -a ${logFile}

                SET HEADING ON
                SET SERVEROUTPUT ON SIZE 10000
                SET ECHO OFF
                SET FEEDBACK OFF

                @PLSQLBLCK1.sql

            GETCOUNT`

        fi
fi

exit 0;

SQL 代码:

DECLARE

   COUNT_SERV INTEGER;

BEGIN

    DBMS_OUTPUT.ENABLE(1000000);

    SELECT COUNT (*) INTO COUNT_SERV FROM FT_LM_SERVERS WHERE STATE <> 'START';

        IF COUNT_SERV > 0 THEN

            DBMS_OUTPUT.PUT_LINE('******ERROR1: One or More BG Object is Down, please restart the BG to proceed ahead******');

        END IF;

END;

我正在尝试获取存储在 COUNT_SERV(UNIX 的)中的 DBMS_OUTPUT.PUT_LINE 的值,以便我可以提前相应地使用它。 但是,如果我执行 shell 脚本,我会在日志文件中得到如下输出:

SQL> SQL> SQL> SQL> SQL> SQL> SQL>  18   19   20  

如果有些值是隐藏的,请忽略,因为我不能在这里显示完整的代码。

【问题讨论】:

    标签: oracle shell unix plsql sh


    【解决方案1】:

    您的代码中有一些错误:

    • 为 SQL*Plus 使用-S参数
    • 在 PL/SQL 块的末尾添加一个斜杠
    • 将结尾GETCOUNT放在第一

    ...然后代码将起作用,例如:

    test.sql:

    DECLARE
        i PLS_INTEGER;
    BEGIN
        SELECT COUNT(1)
        INTO i
        FROM dual;
    
        IF (i > 0)
        THEN
            DBMS_OUTPUT.PUT_LINE(TO_CHAR(i));
        END IF;
    END;
    /
    -- ^^^ Slash!!!
    

    test.sh:

    foo=`sqlplus -S foo/bar@bla <<EOF | tee -a logfile
        SET HEADING ON;
        SET SERVEROUTPUT ON SIZE 10000;
        SET ECHO OFF;
        SET FEEDBACK OFF;
        @test.sql;
    EOF` # <-- First column!!!
    
    echo $foo; # --> Prints "1"
    

    cat logfile # Prints "1"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 2015-04-28
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多