【发布时间】:2018-12-12 17:33:43
【问题描述】:
请参考我的示例, 在 oracle DB 中,这些低于 SP
CREATE OR REPLACE PROCEDURE SP_TEST_PUTLINE AS
BEGIN
DBMS_OUTPUT.ENABLE;
dbms_output.put_line('Hello world!');
END SP_TEST_PUTLINE;
我使用unix shell调用SP从SP获取dbms_output.put_line('Hello world!'),我该怎么做。
我使用sqlplus命令登录数据库,似乎无法得到我想要的结果。
output=$(IFS='';echo connect ${DBUSER}/${DBPASS}@${ORACLE_SID} execute SP_TEST_PUTLINE|sqlplus -s /nolog )
谁能帮帮我? 提前谢谢...
------------------------------------分割线20180705 -------- -----------------------------
感谢 Alex 和 Kaushik Nayak 的帮助,非常有帮助。
以下是 Kaushik Nayak 的一些发现,请参考。
你好 Kaushik,它可以工作,但一开始它失败了,出现以下错误
unknown command beginning "-e connect..." - rest of line ignored. SP2-0734:
所以我将 echo -e 选项更改为 echo,然后它就可以工作了。 所以这里有问题 1)为什么我使用不带-e选项的echo会得到以下结果,是IFS引起的吗?
echo "abc\n def \nghi"
abc
def
ghi
2)根据Alex的cmets,这两个选项需要写成两行吗?但你没有在它们之间使用 \n
set serveroutput on
set feedback off
当我在它们之间添加 \n 时,如下所示。它遇到了如下错误,但是'hellow world!'有输出,
SP2-0734: unknown command beginning "feedback o..." - rest of line ignored. Hello world! PL/SQL procedure successfully completed.
这里有个问题,为什么你在设置服务器输出和设置反馈关闭之间没有使用\n,这个数据库命令(设置反馈关闭)是否运行成功?
期待您的回复。 提前致谢!
【问题讨论】:
-
请不要编辑您的问题以提出其他问题;您可以在 cmets 中要求对答案进行澄清,但这有点超出了这一点 - 通常它应该是一个新问题(或两个)。但因为这些都是小问题。它们可能可以通过 cmets 解决。
-
好的,Alex,我需要回过头来提出另一个问题吗?
-
仅当我添加到 Kaushik 答案的评论不足以解释它时。但请注意未来 *8-)
-
好的,明白了.....
标签: oracle ksh dbms-output