Используйте параметр OUT хранимой процедуры в сценарии Unix

У меня есть скрипт ksh, который напрямую выбирает количество из базы данных. Я заменяю это вызовом хранимой процедуры. Моя хранимая процедура выбирает переменную OUT.

Как записать значение OUT в мой файл данных, как указано в моем сценарии?

    bteq <<EOF
.RUN FILE $DBENV/1logon.txt
.export data file=$PMRootDir/$FOLDER_NME/SessLogs/pdbasis_count.txt
.set recordmode OFF;
.set sidetitles OFF;
.set titledashes off;

#This Select Statement is being replaced by the Stored Procedure Call
SELECT trim(COUNT(*))
FROM [Removed]
WHERE [Removed]

.IF ERRORCODE <> 0 THEN .QUIT 11;

.export reset;
.logoff;
.quit   

EOF


person staples    schedule 01.07.2015    source источник


Ответы (1)


Вы можете попробовать этот. lv_status должен дать вам параметр out.

            ##Procedure Execution starts

         procname=$your_user_name."your_proc_name"
        echo $procname
        echo $procname |grep "("
        if [ $? -eq 0 ]
        then
            procname=`echo $procname|cut -f1 -d")"`",lv_status)";
        else
            procname=`echo $procname`"(lv_status)";
        fi
        echo "Executing $procname"

        bteq <<EOF
        .logon $tdpid/db_user_name,db_password
        .EXPORT FILE=$tempfile
        .SET WIDTH 3000
        .SET TITLEDASHES OFF;
        CALL $procname;
        .EXPORT RESET;
        .LOGOFF
        .EXIT
        EOF

        exit_status=$?
        lv_status=`tail +2 $tempfile`

        rm -f $tempfile

        if [ $lv_status ] 
        then
            if [ $lv_status = "FAILED" -o $exit_status -ne 0 ]
            then
                echo "Error in executing procedure $procname";
                exit 1;
            fi
        else
            echo "The procedure does not have the mandatory OUT status parameter. Consider remodeling the code for full error trapping"
            exit 1
        fi

        echo "Procedure $procname completed successfully"
person Aritra Bhattacharya    schedule 02.07.2015
comment
С небольшими изменениями, чтобы изменить к моим потребностям, это работает. Спасибо! - person staples; 02.07.2015
comment
Да, я просто предоставил черновик. Рад помочь .. :) @staples - person Aritra Bhattacharya; 02.07.2015