目前我正在使用
%testvar%=sqlplus usr/password@schema @test.sql
echo %testvar%
wheretest.sql
使用 block 调用过程BEGIN END
,并将返回的值保存在名为的字符串变量中x
,现在如何将其返回到命令提示符?
目前我正在使用
%testvar%=sqlplus usr/password@schema @test.sql
echo %testvar%
wheretest.sql
使用 block 调用过程BEGIN END
,并将返回的值保存在名为的字符串变量中x
,现在如何将其返回到命令提示符?
我终于用了这个,PS我必须从目录名中获取映射的目录路径: $1 这里是用户名/密码@schema
var=`sqlplus $1 <<+ | grep "Delimeter!*" | sed -n -e '/\[[^]]/s/^[^[]*\[\([^]]*\)].*$/\1/p'
SET SERVEROUT ON
SET ECHO OFF
SET LINESIZE 4000
DECLARE
A VARCHAR2(400);
BEGIN
SELECT directory_path into A from all_directories where directory_name='$input_dir';
dbms_output.put_line( 'Delimeter! [' || A || ']' );
END;
/
exit
+`
注意:那些是'不是'
像这样的东西:
sqlplus /NOLOG
SQL> CONNECT user/password@alias
SQL> SET SERVEROUTPUT ON
SQL> spool /tmp/proc_result.txt
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('hello_world');
3 END;
4 /
hello_world
SQL> spool off
SQL> DISCONNECT
SQL> EXIT
此时你要使用 shell 来读取值。
过程只能通过 OUT 参数返回值,但函数可以返回值,该值可以存储在变量中。我不确定您如何尝试通过过程返回值,但如果您编写了一个函数,您正在尝试做的事情似乎会更好。