Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix脚本中使用存储过程OUT参数_Unix_Stored Procedures_Ksh_Teradata - Fatal编程技术网

在Unix脚本中使用存储过程OUT参数

在Unix脚本中使用存储过程OUT参数,unix,stored-procedures,ksh,teradata,Unix,Stored Procedures,Ksh,Teradata,我有一个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 titleda

我有一个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   

bteq你可以试试这个。lv_状态应提供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"
##程序执行开始
procname=$your\u user\u name.“your\u proc\u name”
echo$procname
echo$procname | grep“(“
如果[$?-等式0]
然后
procname=`echo$procname | cut-f1-d“`,lv_status)”;
其他的
procname=`echo$procname`“(lv_状态)”;
fi
echo“正在执行$procname”

bteq有一些调整修改到我的需要,它的工作。谢谢是的,我只是提供了一份草稿。很乐意帮忙……)@史泰博